如何将图像从imageView保存到照片库?

问题描述 投票:0回答:1

单击导航栏上的“添加”按钮时,我需要将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)
    }
}

}

ios swift xcode uiimageview photo-gallery
1个回答
0
投票

在刻度/添加按钮上被调用的方法似乎是错误的,目标应该是用于调用方法的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方法中,将图像分配到图像视图,以便在单击添加后将保存新图像。

希望有帮助。.:)

© www.soinside.com 2019 - 2024. All rights reserved.