如何保存和加载 Image swift 4?
Posted
技术标签:
【中文标题】如何保存和加载 Image swift 4?【英文标题】:How to save and load Image swift 4? 【发布时间】:2019-09-19 03:59:20 【问题描述】:我有 2 个函数 saveImage 和 loadImage:
//saveImage
func saveImage(imageName: String, image: UIImage)
guard let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else return
let fileName = imageName
let fileURL = documentsDirectory.appendingPathComponent(fileName)
guard let data = image.jpegData(compressionQuality: 1) else return
if FileManager.default.fileExists(atPath: fileURL.path)
do
try FileManager.default.removeItem(atPath: fileURL.path)
print("Removed old image")
catch let removeError
print("couldn't remove file at path", removeError)
do
try data.write(to: fileURL)
catch let error
print("error saving file with error", error)
//loadImage
func loadImageFromDocuments(fileName: String) -> UIImage?
let documentDirectory = FileManager.SearchPathDirectory.documentDirectory
let userDomainMask = FileManager.SearchPathDomainMask.userDomainMask
let paths = NSSearchPathForDirectoriesInDomains(documentDirectory, userDomainMask, true)
if let dirPath = paths.first
let imageUrl = URL(fileURLWithPath: dirPath).appendingPathComponent(fileName)
let image = UIImage(contentsOfFile: imageUrl.path)
return image
return nil
当我这样调用 tableviewcelll 时:
self.cachedImageView.saveImage(imageName:,image:)
self.cachedImageView.loadImageFromDocuments(fileName:)
我不知道怎么用。
【问题讨论】:
不清楚您的问题是什么,您的代码在哪里失败,您是否收到任何错误等? 错误是:调用 func self.cachedImageView.saveImage(imageName:,image:) self.cachedImageView.loadImageFromDocuments(fileName:) 时调用 'loadImageFromDocuments(fileName:)' 的结果未使用跨度> 我想将图片从 url 保存到文档中并从文档中加载图片请帮助我! 【参考方案1】:创建如下图像加载器类:-
class PKImageLoader
let imageCache = NSCache<NSString, UIImage>()
class var sharedLoader: PKImageLoader
struct Static
static let instance: PKImageLoader = PKImageLoader()
return Static.instance
func imageForUrl(urlPath: String, completionHandler: @escaping (_ image: UIImage?, _ url: String) -> ())
guard let url = urlPath.toUrl else
return
if let image = imageCache.object(forKey: urlPath as NSString)
completionHandler(image, urlPath)
else
URLSession.shared.dataTask(with: url) data, _, _ in
guard let finalData = data else return
DispatchQueue.main.async
if let img = UIImage(data: finalData)
self.imageCache.setObject(img, forKey: urlPath as NSString)
completionHandler(img, urlPath)
.resume()
从 URL 下载图像并保存(通过创建 UIImage 数组)
您可以根据需要使用该数组。
使用下面的扩展将图像直接设置为图像视图。
extension UIImageView
func setImage(from urlPath: String, placeHolder: UIImage? = nil)
self.image = placeHolder
PKImageLoader.sharedLoader.imageForUrl(urlPath: urlPath) image, _ in
self.image = image
这个也能帮到你
extension String
var toUrl: URL?
if self.hasPrefix("https://") || self.hasPrefix("http://")
return URL(string: self)
else
return URL(fileURLWithPath: self)
【讨论】:
我使用 nscache 加载并将图像保存到缓存中,但我想保存到硬盘并将图像从硬盘加载到设备中,如何使用?以上是关于如何保存和加载 Image swift 4?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 4 中使用 Launch Screen 或 Image 阻止机密信息? [复制]
Swift - 多个 TableView 复选标记 - 保存和加载选择
iOS,Swift:如何保存包含自定义对象的数组以便我可以加载以供重用?