iOS显示GIF图片

作者: 李现科 | 来源:发表于2016-08-17 12:19 被阅读561次

    什么是GIF

    GIF(Graphics Interchange Format)的原义是“图像互换格式”,是CompuServe公司在 1987年开发的图像文件格式。GIF文件的数据,是一种基于LZW算法的连续色调的无损压缩格式。其压缩率一般在50%左右,它不属于任何应用程序。目前几乎所有相关软件都支持它,公共领域有大量的软件在使用GIF图像文件。GIF图像文件的数据是经过压缩的,而且是采用了可变长度等压缩算法。GIF格式的另一个特点是其在一个GIF文件中可以存多幅彩色图像,如果把存于一个文件中的多幅图像数据逐幅读出并显示到屏幕上,就可构成一种最简单的动画。(百度百科)

    iOS中GIF图片显示

    iOS中最常用的图片显示控件是UIImageView,最简单的代码示例如下:

    let imageView = UIImageView(frame: CGRect.zero)
    let url = NSBundle.mainBundle().pathForResource("cat", ofType: "gif")!
    let image = UIImage(contentsOfFile: url)
    imageView.image = image
    

    但是当我们这么做的时候发现GIF并没有动起来,而是取了第一帧做静态图片.那么怎么解决呢?最简单的方法是利用UIImageViewanimationImages,或者利用UIImageanimatedImageWithImages(images:, duration: )来获取动态的图片.那么难点就在于拆解GIF为一组图片.这时候就需要用到ImageIO的一个简单的拆分功能了,代码如下:

    let url = NSBundle.mainBundle().pathForResource("cat", ofType: "gif")!
    let data = NSData(contentsOfFile: url)!
    let src = CGImageSourceCreateWithData(data, nil)!
    var images = [UIImage]()
    let count = CGImageSourceGetCount(src)
    for index in 0..<count {
        let cgImage = CGImageSourceCreateImageAtIndex(src, index, nil)
        images.append(UIImage(CGImage: cgImage!))
    }
    

    在之后就非常简单了,如利用UIImage的动态图片获取方法:

    imageView.image = UIImage.animatedImageWithImages(images, duration: 0.25)
    

    再如直接使用UIImageView设置一组动态图:

    imageView.animationImages = images
    imageView.animationDuration = 1.0/30.0 // 默认1/图片数量
    imageView.animationRepeatCount = 10    // 默认 0(无限)

    相关文章

      网友评论

        本文标题:iOS显示GIF图片

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