• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Swift - 自动优化照片,改善图像质量

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

copy地址:http://www.hangge.com/blog/cache/detail_902.html,这个网站不错,里面的东西挺实用,研究并自己敲一敲或者做成直接用的类是不错的选择.

这里是本人的地址,他那里的地址算是写死的,但是我这边不打算写死.所以加了拍照优化的功能,代码如下:(但是有一个BUG暂时无法解决,待解决了我再补充,大家自己用起来就知道在哪里了)

import UIKit

 

//从相册选取或者拍照需要实现UIImagePickerControllerDelegate UINavigationControllerDelegate

class ViewController: UIViewController ,UIImagePickerControllerDelegate,UINavigationControllerDelegate{

    

    @IBOutlet weak var imageView: UIImageView!

    var chooseImage: UIImage = UIImage()

    

    //图片原图

//    lazy var originalImage: UIImage = UIImage(named: "jobZ.png")!

//    

//    lazy var context: CIContext = CIContext(options: nil)

 

    

    lazy var context: CIContext = {

        return CIContext(options: nil)

    }()

    

    override func viewDidLoad() {

//        self.imageView.image = UIImage(named: "jobZ.png")

    }

    

    //美化图片

    @IBAction func autoAdjustImage(sender: UIButton) {

        

        var inputImage = CIImage(image: self.chooseImage)

        let options:[String : AnyObject] = [CIDetectorImageOrientation:1] //图片方向

        let filters = inputImage!.autoAdjustmentFiltersWithOptions(options)

        //遍历所有滤镜,依次处理图像

        for filter: CIFilter in filters {

            filter.setValue(inputImage, forKey: kCIInputImageKey)

            inputImage = filter.outputImage

        }

        let cgImage = context.createCGImage(inputImage!, fromRect: inputImage!.extent)

        self.imageView.image = UIImage(CGImage: cgImage)

    }

    

    //选取图片

    @IBAction func chooseImage(sender: UIButton) {

        if UIImagePickerController.isSourceTypeAvailable(.PhotoLibrary){

            //初始化图片控制器

            let picker = UIImagePickerController()

            //设置代理

            picker.delegate = self

            //指定图片控制器类型  source我这里写的是用拍照,如果想用图库后面值改成UIImagePickerControllerSourceType.PhotoLibrary即可

            picker.sourceType = UIImagePickerControllerSourceType.Camera

            //如果有前置摄像头则调用前置摄像头

            if UIImagePickerController.isCameraDeviceAvailable(UIImagePickerControllerCameraDevice.Front){

                picker.cameraDevice = UIImagePickerControllerCameraDevice.Front

            }

            //弹出控制器,显示界面

            self.presentViewController(picker, animated: true, completion: {

                () -> Void in

            })

        }else{

            print("读取相册错误")

        }

    }

 

    

    //还原图片

    @IBAction func resetImage(sender: UIButton) {

        self.imageView.image = self.chooseImage

    }

 

    //代理

    //选择图片成功后代理

    func imagePickerController(picker: UIImagePickerController,

        didFinishPickingMediaWithInfo info: [String : AnyObject]) {

            //查看info对象

            print(info)

            //获取选择的原图

            let image = info[UIImagePickerControllerOriginalImage] as! UIImage

            self.imageView.image = image

            self.chooseImage = image

            //图片控制器退出

            picker.dismissViewControllerAnimated(true, completion: {

                () -> Void in

            })

    }

}

storyboard里的是如何设置的

 

 然后大家试试效果吧 在文章顶部的链接里是有效果图的,建议那边去看看,我就不截图了

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Swift字符串常用方法发布时间:2022-07-13
下一篇:
一步一步学习Swift之(三):巧用AutoLayout布局发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap