NSData没有正确地将图像编码为Base64字符串

时间:2015-03-27 19:24:01

标签: ios iphone image uiimage base64

我使用以下简单代码将iOS中的Image转换为Base64字符串

NSData *originalPhoto = UIImagePNGRepresentation([UIImage imageNamed:@"Time_Icon.png"]);
NSString *base64PhotoString = [originalPhoto base64EncodedStringWithOptions:0];

当我尝试使用其中一个在线Base64图像解码服务图像解码base64PhotoString变量中的字符串时,不能再现,不确定是什么问题。我将此字符串发送到服务中,图像也无法识别。

确定尝试使用这些选项,最后可以获得编码的图像,这些图像可以使用在线工具正确解码,但仍然无法在服务器端识别,服务器端程序员正在使用http://www.newtonsoft.com/json/help/html/Methods_T_Newtonsoft_Json_JsonSerializer.htm 这个库将JSON中的图像反序列化为对象,它只是忽略了图像,我使用RestKit来调用服务器端,我已经意识到RestKit将转义字符添加到编码图像数据中,这可能是个问题吗?

1 个答案:

答案 0 :(得分:0)

让我重新提一下你的问题。我想问题是你已经通过base64编码将NSData编码为NSString,你如何将它从NSString再次检索回NSData。如果问题与我描述的一样,那么StackOverflow上已有解决方案,链接就在这里:

Base64 Decoding in iOS 7+

尽管如此,我将分享我的示例代码并证明它有效。

- (void)viewDidLoad {
    [super viewDidLoad];

    NSData *originalPhoto = UIImagePNGRepresentation([UIImage imageNamed:@"test.png"]);
    imageOri.image = [UIImage imageWithData:originalPhoto];

    // encoding
    NSString *base64PhotoString = [originalPhoto base64EncodedStringWithOptions:0];

    // deconding
    NSData *backToData = [[NSData alloc] initWithBase64EncodedString:base64PhotoString options:0];

    imageDecode.image = [UIImage imageWithData:backToData];
}

希望这有帮助