IOS使用PicturePickerDelegate读取照片

2 篇文章 0 订阅

IOS使用PicturePickerDelegate读取手机的照片

1.建立类实现代理PicturePickerDelegate

class WordEditController: UIViewController,PicturePickerDelegate{

//调用系统照片功能

    @objc func pictuteChioce() {

        if !UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.photoLibrary) {

            //  print("无法选择照片")

            return

        }

        //显示照片窗口

        let picker = UIImagePickerController()

        //拍照 默认类型是照片选择

        //.photoLibrary系统的枚举类型

        picker.sourceType = .photoLibrary

        // 设置代理

        picker.delegate=self

        //不允许编辑照片

        picker.allowsEditing=false

        present(picker,animated:true) {

        }

    }

//实现代理的方法

//拍照、图片、图片修改都回调这个方法

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

            var scaleImage:UIImage?

//读取选择的图片,info[UIImagePickerController.InfoKey.editedImage]是编辑后的图片

//info[UIImagePickerController.InfoKey.originalImage]是原始图片

            let image = info[UIImagePickerController.InfoKey.editedImage] as? UIImage

            if let imageTemp = image {

                scaleImage = imageTemp.scaleToWith(width:600)

            }

//判断是否可以使用,特殊情况选择的图片无法使用

           if scaleImage ==  nil{

            dismiss(animated: true, completion: nil)

            let picAlertController:UIAlertController=UIAlertController(title:"此图不可用,请重新选择",message:nil,preferredStyle: .alert)                          let closeAction =UIAlertAction(title:"好的",style: .cancel,handler: { action in

                return

            })

             picAlertController.addAction(closeAction)

             picAlertController.dismiss(animated:true) {

            }

            self.present(picAlertController,animated:true)

            return

        }

        //记录选择的照片,更改界面显示

        自己的图片控件.uiImage = scaleImage

        //自定义方法,保存图像到本应用目录

        savePhotoInDocument(docImage:scaleImage!)

        //关闭系统照片视图

        dismiss(animated: true, completion: nil)

    }

private func savePhotoInDocument(docImage:UIImage){

        //保存到相册或者自己的目录,UIImageWriteToSavedPhotosAlbum调用后面的方法image()

       // UIImageWriteToSavedPhotosAlbum(docImage, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil)

        //保存到自己的目录

        let imageName:String = "img_" + UUID().uuidString + ".png"

        let fileManager =FileManager.default

        let documentPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! as NSString

      let fileFullName = documentPath + imageName

      //压缩图片 到50K

        let compressData:Data=  docImage.compressImageOnlength(maxLength:50)!

        try? compressData.write(to:URL(fileURLWithPath: fileFullName))

    }

//保存到相册

    @objc func image(_ image: UIImage, didFinishSavingWithError error: NSError?, contextInfo: UnsafeRawPointer) {

        if let error = error {

            let ac = UIAlertController(title: "图片保存失败", message: error.localizedDescription, preferredStyle: .alert)

            ac.addAction(UIAlertAction(title:"好的",style: .default))

            present(ac,animated:true)

        }else{

            let ac =UIAlertController(title:"截图已保存到照片",message:nil,preferredStyle: .alert)

            ac.addAction(UIAlertAction(title:"好的",style: .default))

            present(ac,animated:true)

        }

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值