我正在創建一個鍵盤擴展,它顯示動畫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