我正在开发一些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图像上尝试这种写/读代码时,我得到的图像不是动画。
你能告诉我一个例子的方式会很棒吗。
谢谢。
答案 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
}