2013-02-10 116 views
1

是否可以将NSData/UIImage Data Representation转换为一个字符串,通过HTTP发送到PHP文件以将该字符串保存到数据库中,然后在应用程序中稍后检索并将其转换回NSData/UIImage对象?将NSData/UIImage转换为字符串

我已经尝试了Base64编码库,但base64似乎并不合法,因为图像无法在HTML页面上正确显示。

有什么建议吗?

编辑。

我用下面的库:

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中获取eror loading image [?]。

感谢

+2

Base64正常工作。事实上,当你做内联HTML图像时,它使用Base64。你的尝试肯定有问题。再给它一次,如果你不成功,用你的代码更新你的问题,我们会看看它。 – Rob 2013-02-10 16:39:05

+0

更新了上面的帖子 – 2013-02-10 16:54:09

+0

作为附注:不要将img数据存储为字符串。 b64适合传输,但对存储不利 – 2013-02-10 17:04:25

回答

3

编码一个NSData对象到base 64的点是如此您可以将数据表示为可以更容易地存储或传输的字符串。然后您需要将基本64编码的字符串解码回NSData。这些数据可以用来创建一个新的UIImage。您的服务器需要执行此解码以获取原始数据。

您的代码有错误。这条线:

NSData *encoded = [Base64 encode:imageData]; 

应该是:

,你得到一个字符串,而不是数据
NSString *encoded = [Base64 encode:imageData]; 

通知。

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

-1

可以图像转换成字符串这样 第一您的UIImage转换为NSData的&然后再转换ATA成字符串使用encodeBase64WithData

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

,再串的UIImage这样的:

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

imageDict会是什么? – 2013-02-10 16:47:02

+0

它包含NSData的,附带转换成UIImage的NSData的 – 2013-02-10 16:53:02

+0

后,我曾试图impliment这一点,但我得到的错误“为‘NSData的’不可见@interface声明选择‘objectForKey’ 执行力度: 的NSData *为imageData = UIImageJPEGRepresentation (MyImage.image,90); NSString * imageOne = [self encodeBase64WithData:[imageData objectForKey:@“ImageOne”]]; – 2013-02-10 17:02:56

-1

您需要导入Base64.h

您可以直接使用这样的方法:

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

直接就可以转换为NSString的。这段代码适合我。

希望这会帮助你。

+3

这并没有回答这个问题,OP已经声明他们已经获得了编码字符串。你所做的只是转发了相同的代码 – rmaddy 2013-02-10 17:55:27

+0

我正在使用这个东西上传图片,这是常见的东西 – Nirav 2013-02-10 17:59:53

+2

这不是重点,你的“答案”没有回答这个问题,OP已经知道如何从图像数据中获取基本64字符串。 – rmaddy 2013-02-10 18:01:15