获取网络gif时候报错 : ImageIO: _CGImagePluginInitGIF malformed GIF frame#0

最近在iPad项目中需要获取gif图片,并展示(如何展示gif【点击】)但是遇到下面的问题。代码如下,可自行测试一下,data有值,但是image = nil:

     NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://img.blog.csdn.net/20160304173605864"]];//竖屏gif 可以解析http://img.blog.csdn.net/20160304174457758
     UIImage *image = [UIImage imageWithData:data];

结果表现如下:

gif图片下载是成功了(gif文件不大,才7k),分辨率是2014*1536,
1. 虽然已经获取到NSData了。从data转换到UIImage的时候出错:
2. 分辨率比较高的横屏gif图片,容易解析不成功,我们又尝试竖屏的gif,是可以解析成功的
3. iPhone 平台,无论是横屏gif,还是竖屏gif,都是可以解析的成功
4. 模拟器上可以下载,并解析成功

错误输出是

<Error>: ImageIO: _CGImagePluginInitGIF  malformed GIF frame#0 (2048 x 1536) - [canvasSize: 3145728  frameDataSize: 0   adjustment: 3315]

难道是因为分辨率太大了?查阅了一些资料:stackoverflow上有网友说是Apple的bug【点击】,也有说是gif含有透明帧。现在还不确定什么导致的,欢迎解决该问题的网友留言

我把问题的gif放到这儿,大家可以自行测试一下。

下图是横屏gif(有些mac系统的safari无法看到图片,试试别的浏览器)

获取网络gif时候报错 <Error>: ImageIO: _CGImagePluginInitGIF malformed GIF frame#0_第1张图片


下图是竖屏gif

获取网络gif时候报错 <Error>: ImageIO: _CGImagePluginInitGIF malformed GIF frame#0_第2张图片


你可能感兴趣的:(gif,uiimage)