简体   繁体   中英

NSData/UIImage to String

Is it possible to convert NSData/UIImage Data Representation as JPEG to a String, to be sent over HTTP to a PHP File to save this string in a database, and then retrive it later on in the application and convert it back into an NSData/UIImage Object?

I have tried Base64 Encoding Libraries but base64 doesn't seem valid as the image doesn't display correctly on a HTML Page.

Any suggestions?

Edit.

I was using the following library:

http://www.imthi.com/blog/programming/iphone-sdk-base64-encode-decode.php

And converting in the following way:

 NSData *imageData = UIImageJPEGRepresentation(MyImage.image, 90);
[Base64 initialize];
NSData *encoded = [Base64 encode:imageData];
NSLog(@"%@",encoded);

This does chug out alot of BASE64 but when I save it to a file and try to view it, I just get the eror loading image [?] in Chrome.

Thanks

The point of encoding an NSData object to base 64 is so you can represent the data as a string that can be stored or transferred more easily. You then need to decode the base 64 encoded string back into NSData . This data can then be used to create a new UIImage . Your server needs to do this decoding to get back the original data.

Your code has a mistake. This line:

NSData *encoded = [Base64 encode:imageData];

should be:

NSString *encoded = [Base64 encode:imageData];

Notice that you get back a string, not data.

You commented that you wrote the encoded string to a file then couldn't view the image. Of course not. If you want to write the image data to a file so the file is actually viewable as the image, then don't encode the data first. Write the raw image data to a file.

you can convert image to string like this first convert your UIImage to NSData & then convert that ata into string by using encodeBase64WithData

NSString *imageOne = [self encodeBase64WithData:[imageDict objectForKey:@"ImageOne"]];

and again string to UIImage like this:

[UIImage imageWithData: [self decodeBase64WithString:[registerDataDict objectForKey:@"imageOne"]]];

You need to import Base64.h

You can directly use like this way:

 UIImage *image = _btnaddCountryIcon.imageView.image;
 NSData *imageData = UIImagePNGRepresentation(image);
 NSString *base64 = [Base64 encode:imageData];

directly you can convert to NSString. This code works fine for me.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM