美文网首页
YLImageView的JIF图片的问题

YLImageView的JIF图片的问题

作者: 水达 | 来源:发表于2019-04-07 22:40 被阅读0次

最近做项目,涉及到了YLImageView处理gif图片的问题。发现,当同时下载图片链接相同的时候,后下载的gif图片只会展示最后一帧。

刚拿到这个bug的时候是非苦恼,查验了自己的代码并没有问题。接着又查找YLImageView的底层。发现底层的一个方法确实存在问题。

//_prefetchedNum=10
    if(self.images.count > _prefetchedNum) {
        if(idx != 0) {
            [self.images replaceObjectAtIndex:idx withObject:[NSNull null]];
        }
        NSUInteger nextReadIdx = (idx + _prefetchedNum);
        for(NSUInteger i=idx+1; i<=nextReadIdx; i++) {
            NSUInteger _idx = i%self.images.count;
            if([self.images[_idx] isKindOfClass:[NSNull class]]) {
                dispatch_async(readFrameQueue, ^{
                    CGImageRef image = CGImageSourceCreateImageAtIndex(_imageSourceRef, _idx, NULL);
                    @synchronized(self.images) {
                        if (image != NULL) {
                            [self.images replaceObjectAtIndex:_idx withObject:[UIImage imageWithCGImage:image scale:_scale orientation:UIImageOrientationUp]];
                            CFRelease(image);
                        } else {
                            [self.images replaceObjectAtIndex:_idx withObject:[NSNull null]];
                        }
                    }
                });
            }
        }
    }

从YLImageView的源码处可以看出,每次会处理gif中的十张图片,然后依次往后处理十张。如果出现了两个URL相同的gif,最后处理的gif图片,会拿到上一个gif的处理结果,也就是拿到gif数组的最后一帧。
所以,gif应该不支持同时处理两个相同url的情况,这在代码容错方面容易被测试提bug。

相关文章

  • YLImageView的JIF图片的问题

    最近做项目,涉及到了YLImageView处理gif图片的问题。发现,当同时下载图片链接相同的时候,后下载的gif...

  • 图片403的问题

    问题 当我们访问一个图片不是来源与我们的服务器时,并且对方图片服务器做了防盗链机制。我们防卫图片就可能会变成403...

  • 按IF或JIF检索PubMed文献

    简介 学术期刊的影响因子(impact factor, IF)或期刊影响因子(journal impact fac...

  • 图片问题

    图片路径: Uri 转 File

  • 图片问题

    使用七牛图床。material主题好多地方强制使用png格式,需要注意。

  • 图片问题

    2倍,3倍图图片预留位置参考:https://blog.csdn.net/weixin_34107739/arti...

  • 关于 图片剪裁的问题

    首先 我们在做图盘上传的 时候 都会遇到 图片太大 压缩的问题 记录一下 采用content 上下文 图片 压缩 ...

  • Xcode中的图片问题

    Xcode中的素材图片最好使用png的格式,图标同理。如果拿到的是jpg格式图片,注意千万不要直接通过重命名修改格...

  • vue的图片路径问题

    在学习vue的过程中,我发现一个问题如下:引用图片的时候,用以下方式完全没问题: 但是,将图片路径写在js里面就不...

  • react 图片显示的问题

    本地图片的加载本地图片的加载的第一种方式——require 另一种方式就是import。

网友评论

      本文标题:YLImageView的JIF图片的问题

      本文链接:https://www.haomeiwen.com/subject/bdieiqtx.html