将使用 Kingfisher 下载的图像保存到文档目录
Posted
技术标签:
【中文标题】将使用 Kingfisher 下载的图像保存到文档目录【英文标题】:Save image downloaded using Kingfisher to Document Directory 【发布时间】:2017-08-29 13:04:20 【问题描述】:我正在使用 Kingfisher 从一组 url 下载图像。
我需要将下载或缓存的图像(实际大小的图像)存储在我的文档目录中。
可以这样做吗?
【问题讨论】:
是的,这是可能的,到目前为止您尝试过什么?什么不工作? 我已经通过使用带有 kf.setImage() 的完成处理程序来完成它 【参考方案1】:使用以下代码将图像加载到图像视图中。完成处理程序将在图像下载后帮助执行任何任务。
loadImage(fromUrl: URL(string: imageUrl)!, imageView: imgView, fileName: image.png)
func loadImage(fromUrl: URL, imageView: UIImageView, fileName: String)
imageView.kf.indicatorType = .activity
imageView.kf.setImage(with:fromUrl, placeholder: nil, options: [.transition(.none)], progressBlock: nil, completionHandler: (result) in
let documentsDirectoryURL = try! FileManager().url(for:
.documentDirectory, in: .userDomainMask, appropriateFor: nil, create:
true)
let fileURL =
documentsDirectoryURL.appendingPathComponent(fileName)
if !FileManager.default.fileExists(atPath: fileURL.path)
do
try UIImagePNGRepresentation(imageView.image!)!.write(to: fileURL)
print("Image Added Successfully")
catch
print(error)
else
print("Image Not Added")
)
【讨论】:
【参考方案2】:翠鸟现在支持这个操作,你可以这样使用:
let downLoader = ImageDownloader.default
let imageURL = URL(string: "http://xxxx.png")!
downLoader.downloadImage(with: imageURL, completionHandler: result in
switch result
case .success(let value):
ImageCache.default.storeToDisk(value.originalData, forKey: "your cache key")
case .failure(let error):
print(error)
)
【讨论】:
如果我使用相同的缓存键,.storeToDisk
会替换现有的图像数据吗?如果是这样,这就是我需要的。 :)
是的,我已经测试过了,它将替换旧数据。
图像数据会被删除吗?【参考方案3】:
试试这个:-
let documentsDirectoryURL = try! FileManager().url(for:
.documentDirectory, in: .userDomainMask, appropriateFor: nil, create:
true)
// create a name for your image
let fileURL =
documentsDirectoryURL.appendingPathComponent("imgName.png")
if !FileManager.default.fileExists(atPath: fileURL.path)
do
try UIImagePNGRepresentation(cahedimage!)!.write(to: fileURL)
print("Image Added Successfully")
catch
print(error)
else
print("Image Not Added")
【讨论】:
此代码保存到文档目录。我的问题不是那个。以上是关于将使用 Kingfisher 下载的图像保存到文档目录的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在使用 kingfisher 将图像从 JSON 加载到 tableview 时出错?
如何在 watch OS 2 中使用 Kingfisher 图像库或 AlamofireImage?
如何使用 Kingfisher 在 UIButton 的 setBackgroundImage 期间设置 indicatorType