【问题标题】:Base64 decoding issue with image data-iphone图像数据的 Base64 解码问题-iphone
【发布时间】:2012-01-10 14:30:44
【问题描述】:

我在从 base 64 编码字符串中解码图像数据时遇到了一些问题。 我正在使用从以下链接下载的 base64.h 和 base 64.m 文件

http://cdn.imthi.com/e6cef8/wp-content/uploads/2010/08/base64.zip

这是我的代码

[Base64 initialize];
NSData * data = [Base64 decode:imageString];
imgview.image=[UIImage imageWithData:data];

但是,图像视图中没有显示任何内容,

我通过使用在线 base 64 解码器解码 base 64 字符串(取自调试器控制台)进行测试,它提供了正确的图像, 我还通过将数据写入这样的文件进行了测试

[data writeToFile:imagePath atomically:YES];

它提供了一个 jpg 文件,但我无法打开该图像文件, 它给出了类似

的错误信息

“test.jpg”文件无法打开。

“它可能已损坏或使用了 Preview 无法识别的文件格式。” 我的代码有什么问题 谁能帮帮我.....

谢谢

【问题讨论】:

  • Base64 编码有多种变体——您可能需要仔细检查您的数据或您下载的版本中是否存在奇怪的变体。确保您获得所有数据。无法下载所有长数据流是 iOS 上的常见错误——仅接收第一个缓冲区,错过最后一个缓冲区等。
  • 你可以在网上找到 JPG 布局——在十六进制编辑器中打开收到的文件,看看它是否正确。 (还要根据原始文件长度检查接收文件的长度。)
  • 能否提供base64编码正确工作的链接
  • 查看维基百科文章以获取有关变体的信息。

标签: iphone objective-c xcode base64 decode


【解决方案1】:

尝试不同的 base 64 实现,我使用来自 colloquy 开源项目的那个:


    #import "NSDataAdditions.h" 

    /* encoded string to image */
    NSString *imageString = @"";
    NSData * data = [NSData dataWithBase64EncodedString:imageString];
    UIImage *image1 = [UIImage imageWithData:data];

    /* image to encoded string, back to image */
    imageString = [UIImagePNGRepresentation(image) base64Encoding];
    data = [NSData dataWithBase64EncodedString:imageString];
    UIImage *image2 = [UIImage imageWithData:data];

获取NSAdditions 文件:NSAdditions.h + NSAdditions.m

【讨论】:

  • 对不起,我有一个错误,数据被压缩了。现在我通过 NSDataAddissions 中的 gzipInflate 方法得到了正确的图像
  • 这个翻转了我的图片,我拍了一张图片放到第一个UIImageView中,然后编码再解码图片,把生成的图片放到第二个UIImageView中
猜你喜欢
  • 2020-12-04
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
  • 2012-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多