【问题标题】:How I can dowload GIF image in swift如何快速下载 GIF 图像
【发布时间】:2016-11-22 19:24:21
【问题描述】:

我正在开发一些 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 图像上尝试这种写/读代码时,我得到的只是图像而不是动画。

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

谢谢。

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    我个人使用this tinnie 工具制作 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)
    

    【讨论】:

    • @erhirima 它下载了,但你没有提到保存(进入照片库)
    【解决方案2】:

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

    您收到的图像。您不需要或不想将其翻译成其他类型的图像 (UIImagePNGRepresentation)。只需保存数据。稍后,将 data 直接读入 UIImage。

    【讨论】:

    • 马特,谢谢!我保存了只有数据的图像(不是图像文件)并用这些数据加载图像。有效!。这是个好主意,再次感谢您
    • 使用 UIImagePNGRepresentation 和 UIImageJPEGRepresentation 会丢失 GIF 图片。
    【解决方案3】:

    我认为下载没有问题,您只是想将其呈现为 png;而是尝试使用this library 呈现此保存的数据,例如

    【讨论】:

      【解决方案4】:

      试试这个:

      #import AssetsLibrary
      
      let lib = ALAssetsLibrary()
      
      let data = NSData(contentsOfURL: getCurrentGIFURL)
      
      lib.writeImageDataToSavedPhotosAlbum(data, metadata: nil) { (url, err) in
      
          }
      

      【讨论】:

        猜你喜欢
        • 2018-01-25
        • 1970-01-01
        • 1970-01-01
        • 2015-11-22
        • 2021-05-27
        • 2015-05-10
        • 1970-01-01
        • 2018-12-29
        • 2021-07-09
        相关资源
        最近更新 更多