2011-08-18 81 views
0

我允许我的应用程序的用户拍照或从他们的库中选择一个。选择时,我需要获取图像的数据并将其转换为字符串,以便将其发送到Web服务。将照片数据转换为nsstring返回零

我现在遇到的问题是,当我将编码设置为UTF8时,[NSString initWithData:]返回nil。我需要将它设置为UTF8的XML消息。

NSString *dataString = [[NSString alloc] initWithData:UIImageJPEGRepresentation(theImage, 1.0) encoding:NSUTF8StringEncoding]; 

感谢您的任何建议!

回答

0

使用initWithData:encoding:method不能将UIImage转换为NSString。此方法仅用于将字符串的数据转换为NSString(例如文本文件)。

如果您试图将任何类型的二进制数据转换为NSString,则可以使用某种编码。 Base64被广泛使用。另外你的服务器应该能够解码你发送的内容。

此外,在大多数情况下,发送图像到服务器只需要像过去那样以二进制形式发布它。

+1

谢谢xuzhe。在这种情况下,我无法将图像作为POST变量发送,我必须对其进行编码并将其附加为Web服务消息的一部分。但至少我现在知道我错了,我需要Base64对图像数据进行编码。如果你之前做过类似的事情,你能推荐一个好的图书馆吗? – bennythemink

+0

不客气。你可以去这个链接了解更多信息。 http://cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html。您也可以在文章底部下载名为“NSData + Base64”的NSData类别。将NSData转换为NSString base64编码非常容易。 – xuzhe

+0

再次感谢xuzhe:D – bennythemink