IOS多媒体-图像缩放及CoreImage及模糊效果

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21153627/article/details/84142710

将图片缩放到指定比例

func test1() {
        //将图片缩放到指定比例
        let image = UIImage(named: "Pic4")
        let scaledImage = scaleImage(image: image!, newSize: CGSize(width: 180, height: 180))
        let imageView = UIImageView(image: scaledImage)
        imageView.center = CGPoint(x: 160, y: 160)
        self.view.addSubview(imageView)
    }
    //将图片缩放到指定比例
    func scaleImage(image:UIImage , newSize:CGSize) -> UIImage {
        let imageSize = image.size
        let oldWidth = imageSize.width
        let oldHight = imageSize.height
        //计算出比例
        let widthFactor = newSize.width/oldWidth
        let hightFactor = newSize.height/oldHight
        //获取最小比
        let scaleFactor = (widthFactor>hightFactor) ? hightFactor : widthFactor
       //计算出新的尺寸
        let width = scaleFactor * oldWidth
        let height = scaleFactor * oldHight
        //常见一个新的显示区域
        let targetSize = CGSize(width: width, height: height)
        //创建绘图上下文环境
        UIGraphicsBeginImageContext(targetSize)
        //将图像对象 画入之前计算的新尺寸里
        image.draw(in: CGRect(x: 0, y: 0, width: width, height: height))
        //获取上下文里的内容,将内容写入新的图像对象
        let newImage = UIGraphicsGetImageFromCurrentImageContext();
        return newImage!
    }

使用图形上下文转换图片为灰度图 

func test2() {
        let image = UIImage(named: "Pic4")
        let scaledIMage = grayImage(image: image!)
        let imageView = UIImageView(image: scaledIMage)
        imageView.center = CGPoint(x: 160, y: 160)
        self.view.addSubview(imageView)
    }
    //使用图形上下文转换图片为灰度图
    func grayImage(image:UIImage) -> UIImage {
        let imageSize = image.size
        let width = imageSize.width
        let height = imageSize.height
        //创建灰度色彩空间对象
        let spaceRef = CGColorSpaceCreateDeviceGray()
        let context = CGContext(data: nil, width:Int(width), height: Int(height), bitsPerComponent: 8, bytesPerRow: 0, space: spaceRef, bitmapInfo:CGBitmapInfo().rawValue)!
        
        let rect = CGRect(x: 0, y: 0, width: imageSize.width, height: imageSize.height  )
        context.draw(image.cgImage!, in: rect)
        let grayImage = UIImage(cgImage: context.makeImage()!)
        return grayImage
    }

利用图片处理框架,将图片转成单色样式

func test3() {
        let image = UIImage(named: "Pic4")
        let imageView = UIImageView(image: image)
        self.view.addSubview(imageView)
        
        //初始化一个图像对象 加载之前导入图片
        let ciImage = CIImage(image: image!)
        
        let color = CIColor(red: 0.8, green: 0.6, blue: 0.4)
        //初始化滤镜对象 设置滤镜对象为单色调滤镜
        let filter = CIFilter(name: "CIColorMonochrome")
        //设置单色调滤镜的输入颜色值
        filter?.setValue(color, forKey: kCIInputColorKey)
        //设置单色调滤镜的颜色浓度值
        filter?.setValue(1.0, forKey: kCIInputIntensityKey)
        //设置需要应用单色调滤镜的图像
        filter?.setValue(ciImage, forKey: kCIInputImageKey)
        //获得应用单色调滤镜后的图像
        let outimage = filter?.outputImage
        imageView.image = UIImage(ciImage: outimage!)
    }

使用图片处理框架调整图像的色相

func test4()  {
        let image = UIImage(named: "Pic4")
        let imageVIew = UIImageView(image: image)
        self.view.addSubview(imageVIew)
        
        let ciImage = CIImage(image: image!)
        //初始化滤镜对象。调整为色相调整滤镜
        let filter = CIFilter(name: "CIHueAdjust")
        //设置色相调整滤镜的输入角度值为30度
        filter?.setValue(3.14/6, forKey: kCIInputAngleKey)
        //设置需要应用色相调整滤镜的图像
        filter?.setValue(ciImage, forKey: kCIInputImageKey)
        let outImage = filter?.outputImage
        imageVIew.image=UIImage(ciImage: outImage!)
    }

使用图片框架添加马赛克

func test5() {
        let image = UIImage(named: "Pic4")
        let imageVIew = UIImageView(image: image)
        self.view.addSubview(imageVIew)
        
        let ciimage = CIImage(image: image!)
        //初始化一个滤镜对象,设置为像素滤镜
        let filter = CIFilter(name: "CIPixellate")
        filter?.setDefaults()//采用默认配置选项
        //设置需要该滤镜的图像
        filter?.setValue(ciimage, forKey: kCIInputImageKey)
        let outImage = filter?.outputImage
        imageVIew.image = UIImage(ciImage: outImage!)
    }

 使用图像框架添加模糊效果

 func test6() {
        let image = UIImage(named: "Pic4")
        let imageVIew = UIImageView(image: image)
        self.view.addSubview(imageVIew)
        //从8.0开始系统提供了模糊效果。判断如果是8.0则执行模糊的效果
        if #available(iOS 8.0, *) {
            //初始化一个效果模糊对象。可快速制作毛玻璃特效
            let blur = UIBlurEffect(style: .light)
            // 初始化一个基于模糊效果的视觉效果视图
            let blurView = UIVisualEffectView(effect: blur)
            //设置模糊视图的位置
            blurView.frame = CGRect(x: 40, y: 40, width: 200, height: 200)
            //设置模糊视图的圆角为30
            blurView.layer.cornerRadius=30
            //设置模糊视图层的遮罩覆盖属性 进行边界裁切
            blurView.layer.masksToBounds = true
            imageVIew.addSubview(blurView)
            
        }else{
            let dialog = UIAlertController(title: "提示", message: "8.0以下不支持模糊功能", preferredStyle: UIAlertControllerStyle.alert)
            let ok = UIAlertAction(title: "ok", style: UIAlertActionStyle.default, handler: nil)
            dialog.addAction(ok)
            self.present(dialog,animated: true,completion: nil)
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_21153627/article/details/84142710
今日推荐