美文网首页
SDWebImage源码阅读之UIImage + GIF

SDWebImage源码阅读之UIImage + GIF

作者: YKDog | 来源:发表于2017-04-21 18:23 被阅读23次

    layout: post
    title: "SDWebImage源码阅读之UIImage + GIF"
    date: 2014-12-19 14:48
    comments: false
    tags:
    - SDWebImage


    SDWebImage 加载gif图的原理

    gif图片显示

    gif图片是一帧一帧的图片组成, 相当于一个相册图片集合。通过这些图片的显示时间, 可以组成一个动画。

    核心方法

    • 传入gif图片的数据data, 返回交给imageView就可以动画显示gif图片了

      • (UIImage *)sd_animatedGIFWithData:(NSData *)data

    过程分析

    • 获取数据源, 以后可以通过这个源头获得 某一帧的 数据和时间等
      CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL);

    • 获得图片的帧数 size_t count = CGImageSourceGetCount(source);

    • 通过duration = duration + [self sd_frameDurationAtIndex:i source:source]; 方法可以获得总的帧动画时间, 内部通过每一帧的帧字典可以获得每一个的时间, 通过累加 得到总的事件duration

    • animatedImage = [UIImage animatedImageWithImages:images duration:duration]; 通过这个方法返回一个处理过后的image, 可以直接显示动画了

    细节处理

    没有传入data

      + (UIImage *)sd_animatedGIFWithData:(NSData *)data {
        if (!data) {
            return nil;
        }
    

    属性时间获取失败

      + if (!duration) {
                duration = (1.0f / 10.0f) * count;
            }
    

    相关文章

      网友评论

          本文标题:SDWebImage源码阅读之UIImage + GIF

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