Swift - 通过 IBAction 将 UIImageView 作为 PNG 文件保存到图库
Posted
技术标签:
【中文标题】Swift - 通过 IBAction 将 UIImageView 作为 PNG 文件保存到图库【英文标题】:Swift - Save UIImageView to the gallery as a PNG file, via an IBAction 【发布时间】:2018-12-06 22:11:03 【问题描述】:我在 IBAction 上使用以下代码将我的 UIImageView 保存到我的画廊:
UIGraphicsBeginImageContextWithOptions(self.theView.bounds.size, view.isOpaque, 0)
theView.layer.render(in: UIGraphicsGetCurrentContext()!)
let theCapturedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
//UIImageWriteToSavedPhotosAlbum(theCapturedImage!,self,nil,nil)
可以,但是画质不是很好,可能是JPEG格式
我怎样才能保存为 PNG?
【问题讨论】:
为什么要绘制图像视图?为什么不保存图像视图的图像? 你玩过 UIGraphicsBeginImageContextWithOptions 中的比例尺吗?如果我没记错的话,渲染图层通常不会提供最好的质量 对于 PNG 转换请看这里:***.com/questions/1489250/… 【参考方案1】:Swift 4.2,Xcode 10.0
let fileManager = FileManager.default
let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent("scan.jpg")
DispatchQueue.global(qos: .background).async
let image = UIImage(data: "Enter ImageData")
if image != nil
let imageData = image!.pngData()
UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil)
fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil)
DispatchQueue.main.async
let alert = UIAlertController(title: "Success", message: "Image have been saved successfully!", preferredStyle: UIAlertController.Style.alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: (action) in
let _ = self.navigationController?.popViewController(animated: true)
))
self.present(alert, animated: true, completion: nil)
else
let alert = UIAlertController(title: "Message", message: "Image not found", preferredStyle: UIAlertController.Style.alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.cancel, handler: (action) in
))
self.present(alert, animated: true, completion: nil)
【讨论】:
以上是关于Swift - 通过 IBAction 将 UIImageView 作为 PNG 文件保存到图库的主要内容,如果未能解决你的问题,请参考以下文章
Swift:IBAction 在单击按钮后将图像放入 UIImageView
Swift:编辑模式,将 editButtonItem() 链接到 IBAction
如何在 Swift 4 中以编程方式将 IBAction 添加到按钮?
如何将边框添加到从 Swift 2.1 中的故事板链接的 @IBAction 按钮?