ios - 如何将图像从 imageView 保存到照片库?
问题描述
当我单击导航栏上的“添加”按钮时,我需要将 imageView 的照片保存到图库中。我正在尝试保存它,但出现“线程 1:信号 SIGABRT”错误。也许有人知道,问题出在哪里?
class ViewControllerFilters2: UIViewController, UINavigationControllerDelegate {
@IBOutlet weak var imageView: UIImageView!
var filteredImage: UIImage?
var imagePicker: UIImagePickerController!
override func viewDidLoad() {
super.viewDidLoad()
if imageView.image == nil {
imageView.image = filteredImage!
}
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "✔", style: .plain, target: self, action: #selector(imagePickerController(_:didFinishPickingMediaWithInfo:)))
}
@objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let pickedImage = info[UIImagePickerController.InfoKey.editedImage] as? UIImage{
UIImageWriteToSavedPhotosAlbum(pickedImage, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil)
dismiss(animated: true, completion: nil)
}
}
@objc func image (_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeRawPointer) {
if let error = error {
// we got back an error!
let ac = UIAlertController(title: "Save error", message: error.localizedDescription, preferredStyle: .alert)
ac.addAction(UIAlertAction(title: "OK", style: .default))
present(ac, animated: true)
} else {
let ac = UIAlertController(title: "Saved!", message: "Your altered image has been saved to your photos.", preferredStyle: .alert)
ac.addAction(UIAlertAction(title: "OK", style: .default))
present(ac, animated: true)
}
}
}
解决方案
在刻度/添加按钮上调用的方法似乎错误,目标应该是调用方法的 uibarbutton 项:
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "✔", style: .plain, target: self, action: #selector(imagePickerController(_:didFinishPickingMediaWithInfo:)))
更改用于保存图像的选择器,该选择器将具有用于将图像保存到相册的代码,例如:
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "✔", style: .plain, target: self, action: #selector(saveImage))
和保存图像的方法可能是这样的:
@objc func saveImage() {
if let pickedImage = imageView.image {
UIImageWriteToSavedPhotosAlbum(pickedImage, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil)
}
}
此外,在 imagePickerController didFinish 方法中,将图像分配给图像视图,以便在单击添加时保存新图像。
编辑
根据崩溃日志,在您的 plist 中为 NSPhotoLibraryAddUsageDescription 添加用法信息:
希望能帮助到你.. :)
推荐阅读
- java - Android:当我关闭应用程序重新启动时,跟踪 Firestore 中的文档数量
- python - 在 .proto 文件中定义 Any.proto
- node.js - Sequelize - 更新 FOREIGN KEY 约束赢得 ONDELETE CASCADE
- javascript - 引导输入按钮变得可写
- idl-programming-language - IDL 过程中的参数数量不正确
- python - 在多索引 Pandas 中使用 groupby 添加列
- spring - 如何在spring boot项目中使用aws docker镜像
- java - 如何从一个表中检索一百万行并将其插入到另一个表中?
- azure-devops - 如何摆脱“MyFirstProject”
- python-3.x - 为什么 df.lookup 比 df.min 慢?