我正在创建一个键盘扩展,它显示动画GIF图像,但它一次只显示最多2MB分布在20个GIF中的图像。消耗8 MB内存的2 MB GIF图像
每当加载GIF时,内存消耗增加超过8MB,这导致内存压力,并且键盘在加载后立即终止。
我使用SDWebImage
来显示GIF。
任何人都可以建议我,我应该如何使用GIF,或者是在键盘扩展中显示动画GIF的好主意?为什么扩展占用这么多的内存?
谢谢。
我正在创建一个键盘扩展,它显示动画GIF图像,但它一次只显示最多2MB分布在20个GIF中的图像。消耗8 MB内存的2 MB GIF图像
每当加载GIF时,内存消耗增加超过8MB,这导致内存压力,并且键盘在加载后立即终止。
我使用SDWebImage
来显示GIF。
任何人都可以建议我,我应该如何使用GIF,或者是在键盘扩展中显示动画GIF的好主意?为什么扩展占用这么多的内存?
谢谢。
尝试使用FLAnimatedImage和Nuke,它会自动为您整合FLAnimatedImage。 FLAnimatedImage是目前iOS上最好的动画GIF引擎。
SDWebImage的问题在于它们有自己的动画GIF实现。他们认为遍历所有帧和前期创建位图:从另一方面
for (size_t i = 0; i < count; i++) {
CGImageRef image = CGImageSourceCreateImageAtIndex(source, i, NULL);
duration += [self sd_frameDurationAtIndex:i source:source];
[images addObject:[UIImage imageWithCGImage:image scale:[UIScreen mainScreen].scale orientation:UIImageOrientationUp]];
CGImageRelease(image);
}
FLAnimatedImage点播创建位图和智能缓存它们。
GIF被压缩。 2MB GIF图像通常包含2MB以上的原始信息。 –
@TheParamagneticCrosissant是的,但多少钱?如果它高达4MB仍然OK。 – iphonic