避免图像解压缩阻塞主线程

aml*_*szk 3 iphone objective-c ios javax.imageio

我有一些代码使用UIImageView显示动画GIF图像,在这里:https://github.com/amleszk/GifBlocking

它适用于99%的情况,尽管某种类型的GIF图像存在问题,可以在此处找到一个示例:http://i.imgur.com/mbImw.gif

这个gif接收101个图像,然后在显示包含动画图像的UIImageView时阻塞主线程.如果它具有压缩,它可以解压缩gif,但是我如何阻止阻塞主线程呢?

在主线程上调用的方法是 DGifDecompressInput DGifDecompressLine copyImageBlockSetGIF

问题是当视图被添加到层次结构时发生gif解压缩 - 这应该在主线程上完成

谢谢

Jan*_*ano 6

grasGendarme的代码很有用,但请注意UIImage是懒惰的,在真正需要之前不会对图像进行解码.关键是你必须使用后台线程强制解压缩CGContextDrawImage.因此,使用UIImage + JTImageDecode.h在后台创建一个未压缩的图像版本,然后将其设置回主线程.