加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift3 – swift拍照并保存到照片库

发布时间:2020-12-14 04:26:31 所属栏目:百科 来源:网络整理
导读:我一直在寻找,但无法找到答案.我有一个按钮“拍照”,当按下时,它打开相机,你拍照,当你选择“使用照片”,我希望它保存到照片库. 我可以做除了保存到图书馆以外的所有人,有人可以帮忙吗? 这是我打开相机的代码: 解决方法 使用以下代码获取从照片库中拍摄的图
我一直在寻找,但无法找到答案.我有一个按钮“拍照”,当按下时,它打开相机,你拍照,当你选择“使用照片”,我希望它保存到照片库.
我可以做除了保存到图书馆以外的所有人,有人可以帮忙吗?

这是我打开相机的代码:

enter image description here

解决方法

使用以下代码获取从照片库中拍摄的图像并保存在照片库中.

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文件作为源代码类型,然后在里面添加权限 –

open .plist file

之后

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
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读