import Foundation
import UIKit
extension UIImage {
/* 压缩图片 */
func imageCompress(toScale: CGFloat) -> UIImage {
let targetHeight = toScale * self.size.height
let targetWidth = toScale * self.size.width
let size = CGSize(width: targetWidth, height: targetHeight)
//创建一个基于位图的上下文
UIGraphicsBeginImageContext(size)
self.draw(in: CGRect(x: 0, y: 0, width: targetWidth, height: targetHeight))
//根据size 返回图形大小
let newImg : UIImage = UIGraphicsGetImageFromCurrentImageContext()!
//关闭上下文
UIGraphicsEndImageContext()
return newImg
}
/* 图片模糊 */
func blurImage(value:NSNumber) -> UIImage {
// CoreImage
let context = CIContext(options: [kCIContextUseSoftwareRenderer: true])
//根据UIImage 创建 CIImage类型,进行操作,然后再返回 UIImage类型
let ciImg = CIImage(image: self)
//滤镜
let blurFilter = CIFilter(name: "CIGaussianBlur")
blurFilter?.setValue(ciImg, forKey: kCIInputImageKey)
//设置模糊程度
blurFilter?.setValue(value, forKey: "inputRadius")
let imageRef = context.createCGImage((blurFilter?.outputImage)!, from: (ciImg?.extent)!)
let newImg = UIImage(cgImage: imageRef!)
return newImg
}
/*
出现问题:因为在模糊的时候,边缘会变成半透明的状态,所以理想状况是可以对原图像进行适当放大,选择使用CIAffineClamp在模糊之前对图像进行处理。
*/
func blurImageAnother(value:NSNumber) -> UIImage {
// CoreImage
let context = CIContext(options: [kCIContextUseSoftwareRenderer: true])
//根据UIImage 创建 CIImage类型,进行操作,然后再返回 UIImage类型
let inputImage = CIImage(image: self)
//滤镜
let affineClampFilter = CIFilter(name: "CIAffineClamp")
let xform = CGAffineTransform(scaleX: 1.0, y: 1.0)
affineClampFilter?.setValue(inputImage, forKey: kCIInputImageKey)
affineClampFilter?.setValue(NSValue.init(cgAffineTransform: xform), forKey: "inputTransform")
let outinputImg = affineClampFilter?.outputImage!
let blurFilter = CIFilter(name: "CIGaussianBlur")
blurFilter?.setValue(outinputImg, forKey: kCIInputImageKey)
//设置模糊程度
blurFilter?.setValue(value, forKey: "inputRadius")
let imageRef = context.createCGImage((blurFilter?.outputImage)!, from: (inputImage?.extent)!)
let newImg = UIImage(cgImage: imageRef!)
return newImg
}
}
UIImage+Extension
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- category and extension的官方文档 类别的作用 将类的实现分散到多个不同文件或多个不同框架中:...
- Jianshu.com does not support MathJax, to view the math eq...
- 刚开始学习分类和类扩展的时候很茫然,什么是分类,什么是类扩展,他们分别用在什么场合,各有哪些不能被替代的特点?后来...