UIImage imagewithData返回nil

时间:2015-09-22 12:06:48

标签: ios objective-c iphone

我存储在iPhone相机上拍摄的图像并将其作为字符串保存到服务器上:

[UIImagePNGRepresentation(newImage) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];

在从服务器检索它们之后,我试图将它们转换为这样的图像:

NSData *data = [dataStr dataUsingEncoding:NSUTF8StringEncoding];
    UIImage *image = [UIImage imageWithData:data];

    if (image)
    {
        [self.bagImagesArray addObject:image];
    }

"图像"总是返回nil ...退出数据似乎绝对没问题

它必须是我转换初始图片的方式或我将数据转换为图片的方式,但我不知道从哪里开始,谷歌并没有真正帮助太多

任何帮助都会很棒

*更新*

也试过这个

NSData *data = [[NSData alloc] initWithBase64EncodedString:dataStr options:0];
    UIImage *image = [UIImage imageWithData:data];

注销"图像"表明它认为它是一个UIButton ...... wat?

更新

dataStr看起来像这样

<ffd8ffe0 00104a46 49460001 01000048 00480000 ffe10058 45786966 00004d4d 002a0000 00080002 01120003 00000001 00060000 87690004 00000001 00000026 00000000 0003a001 00030000 00010001 0000a002 00040000 00010000 0cc0a003 00040000 00010000 09900000 0000ffed 00385068 6f746f73 686f7020...51494005 2d250680 168a4a5a 061494b4 50014669 28a0028a 05068016 8a4a5eb4 001a4a0d 2d001451 45001451 45001452 5283400d a2968a00 ffd9>

显然需要更长的时间,但是你得到的照片

3 个答案:

答案 0 :(得分:0)

保存时:

NSData *data = UIImagePNGRepresentation(image);
[data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];

阅读时:

NSData *data = [[NSData alloc]initWithBase64EncodedString:string options:NSDataBase64DecodingIgnoreUnknownCharacters];
[UIImage imageWithData:data];

答案 1 :(得分:0)

替换

NSData *data = [[NSData alloc] initWithBase64EncodedString:dataStr options:0];

NSData *data = [[NSData alloc] initWithBase64EncodedString:dataStr options:NSDataBase64DecodingIgnoreUnknownCharacters];

答案 2 :(得分:0)

我想知道但是你的数据看起来像jpeg图像,至少第一个字节包含JFIF签名 check here

网络中的图像是否有可能被破坏?

您也可以尝试将数据写入文件并在Mac上打开,也许某些事情变得更加清晰