版权声明:本文为博主原创文章,未经博主允许不得转载。 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)
}
}