1

是否可以将 NSData/UIImage 数据表示形式作为 JPEG 转换为字符串,通过 HTTP 发送到 PHP 文件以将此字符串保存在数据库中,然后稍后在应用程序中检索它并将其转换回 NSData/ UIImage 对象?

我已经尝试过 Base64 编码库,但由于图像无法在 HTML 页面上正确显示,因此 base64 似乎无效。

有什么建议么?

编辑。

我正在使用以下库:

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

并按以下方式转换:

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

这确实会产生很多 BASE64,但是当我将其保存到文件并尝试查看它时,我只是在 Chrome 中得到错误加载图像 [?]。

谢谢

4

3 回答 3

3

将对象编码NSData为 base 64 的目的是,您可以将数据表示为可以更轻松地存储或传输的字符串。然后,您需要将 base 64 编码字符串解码回NSData. 然后可以使用此数据创建一个新的UIImage. 您的服务器需要进行此解码才能取回原始数据。

你的代码有错误。这一行:

NSData *encoded = [Base64 encode:imageData];

应该:

NSString *encoded = [Base64 encode:imageData];

请注意,您返回的是字符串,而不是数据。

您评论说您将编码字符串写入文件然后无法查看图像。当然不是。如果要将图像数据写入文件以便文件实际上可以作为图像查看,则不要先对数据进行编码。将原始图像数据写入文件。

于 2013-02-10T17:02:07.970 回答
-1

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.

于 2013-02-10T17:44:06.350 回答
-1

您可以像这样将图像转换为字符串首先将您的 UIImage 转换为 NSData 然后使用 encodeBase64WithData 将该 ata 转换为字符串

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

并再次像这样字符串到 UIImage:

[UIImage imageWithData: [self decodeBase64WithString:[registerDataDict objectForKey:@"imageOne"]]];
于 2013-02-10T16:45:25.010 回答