YYAnimatedImageView没有缓存webp第0帧图片问题
paulmanwang opened this issue · 0 comments
paulmanwang commented
根据webp data创建YYImage:
- (instancetype)initWithData:(NSData *)data scale:(CGFloat)scale,
会构建解码器并解码第0帧图片。
然后将YYImage设置给YYAnimatedImageView,此时并没有将解码的第0帧图片缓存到_buffer字典中,导致后续会再一次解码第0帧图片。
这样一方面会造成多余的cpu资源消耗;另一方面在使用instruments查看内存占用时,发现会多出一帧图片的内存占用,比如webp的总帧数为10,单帧解码后大小为1M,理论上占用内存为10M,但是instruments显示的内存占用总的帧数为11,总的内存大小为11M。
我尝试将第0帧缓存到_buffer字典中:
- (void)setImage:(UIImage *)image {
if (self.image == image) return;
[self setImage:image withType:YYAnimatedImageTypeImage];
// 缓存第一帧图片
if (_buffer) {
_buffer[@(0)] = image;
}
}
测试发现第0帧图片不会去重复解码,内存占用也变为正常的10M。
望解答讨论,感谢~