如何在swift中下载GIF图像

时间:2016-11-22 19:24:22

标签: ios swift

我正在开发一些tumblr客户端。我想在仪表板中下载所有照片并将其保存到documentDirectory。其中一些是jpg,有些是gif。我已使用以下代码成功下载jpg图像:

do {
        let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
        let fileURL = documentsURL.appendingPathComponent(fname)
        if let pngImageData = UIImagePNGRepresentation(myImage!) {
            try pngImageData.write(to: fileURL, options: .atomic)
            print(fname + " - saved")
        }
    } catch {print(fname + " - not saved") }

myImage是从URL下载的图像。此代码适用于jpg图像,但不适用于GIF。

最后我用这个读了这些文件:

let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
    let filePath = documentsURL.appendingPathComponent(fname).path
    if FileManager.default.fileExists(atPath: filePath) {
        return UIImage(contentsOfFile: filePath)!
    }

它适用于jpg,但不适用于GIF。当我在GIF图像上尝试这种写/读代码时,我得到的图像不是动画。

你能告诉我一个例子的方式会很棒吗。

谢谢。

4 个答案:

答案 0 :(得分:5)

我个人使用this小工具来制作GIF。只需将 iOSDevCenters + GIF.swift 文件直接添加到您的项目中并使用它,如下所示

<强> 1。在线网址

    let imageURL = UIImage.gifImageWithURL(gifURL)
    let yourImageView = UIImageView(image: imageURL)

<强> 2。本地文件名

    let imageName = UIImage.gifImageWithName(imageName)
    let yourImageView = UIImageView(image: imageName)

第3。使用数据

    let imageData = NSData(contentsOf: Bundle.main.url(forResource: "name", withExtension: ".gif"))
    let imageData = UIImage.gifImageWithData(imageData)
    let yourImageView = UIImageView(image: imageData)

答案 1 :(得分:4)

实际上你的第一个代码也无法正常工作。

您收到的内容图片。您不需要或想要转换为其他类型的图像(UIImagePNGRepresentation)。只需保存数据即可。稍后,将数据直接读入UIImage。

答案 2 :(得分:0)

我认为下载没有问题,你只是想把它作为一个png来呈现;而是尝试使用this library呈现此保存的数据,例如

答案 3 :(得分:0)

试试这个:

#import AssetsLibrary

let lib = ALAssetsLibrary()

let data = NSData(contentsOfURL: getCurrentGIFURL)

lib.writeImageDataToSavedPhotosAlbum(data, metadata: nil) { (url, err) in

    }