我一直在寻找,但无法找到答案.我有一个按钮“拍照”,当按下时,它打开相机,你拍照,当你选择“使用照片”,我希望它保存到照片库.
我可以做除了保存到图书馆以外的所有人,有人可以帮忙吗?
我可以做除了保存到图书馆以外的所有人,有人可以帮忙吗?
这是我打开相机的代码:
解决方法
使用以下代码获取从照片库中拍摄的图像并保存在照片库中.
Code Support for Swift 3.1 & 4.0 version:
首先,我们必须在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 } }
Swift 4.2 Code update –
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 } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。