swift3 – swift拍照并保存到照片库
发布时间:2020-12-14 04:26:31 所属栏目:百科 来源:网络整理
导读:我一直在寻找,但无法找到答案.我有一个按钮“拍照”,当按下时,它打开相机,你拍照,当你选择“使用照片”,我希望它保存到照片库. 我可以做除了保存到图书馆以外的所有人,有人可以帮忙吗? 这是我打开相机的代码: 解决方法 使用以下代码获取从照片库中拍摄的图
我一直在寻找,但无法找到答案.我有一个按钮“拍照”,当按下时,它打开相机,你拍照,当你选择“使用照片”,我希望它保存到照片库.
我可以做除了保存到图书馆以外的所有人,有人可以帮忙吗? 这是我打开相机的代码: 解决方法
使用以下代码获取从照片库中拍摄的图像并保存在照片库中.
首先,我们必须在Project的.plist文件中进行权限设置: – 1)相机 <key>NSCameraUsageDescription</key> <string>This app will use camera.</string> 2)图片库 <key>NSPhotoLibraryUsageDescription</key> <string>You can select photos to attach to reports.</string> 3)保存到照片库 <key>NSPhotoLibraryAddUsageDescription</key> <string>Please allow access to save photo in your photo library</string> 我们需要打开.pilst文件作为源代码类型,然后在里面添加权限 – 之后 import UIKit class ViewController: UIViewController,UINavigationControllerDelegate,UIImagePickerControllerDelegate { @IBOutlet weak var imageTake: UIImageView! var imagePicker: UIImagePickerController! override func viewDidLoad() { super.viewDidLoad() } //MARK: - Take image @IBAction func takePhoto(_ sender: UIButton) { imagePicker = UIImagePickerController() imagePicker.delegate = self imagePicker.sourceType = .camera present(imagePicker,animated: true,completion: nil) } //MARK: - Saving Image here @IBAction func save(_ sender: AnyObject) { UIImageWriteToSavedPhotosAlbum(imageTake.image!,self,#selector(image(_:didFinishSavingWithError:contextInfo:)),nil) } //MARK: - Add image to Library 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.",animated: true) } } //MARK: - Done image capture here func imagePickerController(_ picker: UIImagePickerController,didFinishPickingMediaWithInfo info: [String : Any]) { imagePicker.dismiss(animated: true,completion: nil) imageTake.image = info[UIImagePickerControllerOriginalImage] as? UIImage } }
class ViewController: UIViewController,UINavigationControllerDelegate { @IBOutlet weak var imageTake: UIImageView! var imagePicker: UIImagePickerController! enum ImageSource { case photoLibrary case camera } override func viewDidLoad() { super.viewDidLoad() } //MARK: - Take image @IBAction func takePhoto(_ sender: UIButton) { guard UIImagePickerController.isSourceTypeAvailable(.camera) else { selectImageFrom(.photoLibrary) return } selectImageFrom(.camera) } func selectImageFrom(_ source: ImageSource){ imagePicker = UIImagePickerController() imagePicker.delegate = self switch source { case .camera: imagePicker.sourceType = .camera case .photoLibrary: imagePicker.sourceType = .photoLibrary } present(imagePicker,completion: nil) } //MARK: - Saving Image here @IBAction func save(_ sender: AnyObject) { guard let selectedImage = imageTake.image else { print("Image not found!") return } UIImageWriteToSavedPhotosAlbum(selectedImage,nil) } //MARK: - Add image to Library @objc func image(_ image: UIImage,contextInfo: UnsafeRawPointer) { if let error = error { // we got back an error! showAlertWith(title: "Save error",message: error.localizedDescription) } else { showAlertWith(title: "Saved!",message: "Your image has been saved to your photos.") } } func showAlertWith(title: String,message: String){ let ac = UIAlertController(title: title,message: message,preferredStyle: .alert) ac.addAction(UIAlertAction(title: "OK",style: .default)) present(ac,animated: true) } } extension ViewController: UIImagePickerControllerDelegate{ func imagePickerController(_ picker: UIImagePickerController,didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]){ imagePicker.dismiss(animated: true,completion: nil) guard let selectedImage = info[.originalImage] as? UIImage else { print("Image not found!") return } imageTake.image = selectedImage } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |