Swift3.0中 图片高斯模糊处理
来源:互联网 发布:windows 粘滞键 后门 编辑:程序博客网 时间:2024/05/01 05:55
extension UIImage{
// 模糊图片
//增加模糊的效果(需要添加Accelerate.Framework)
func blurryImage(_ level:CGFloat) ->UIImage {
var tempLevel = level
//高斯模糊参数(0-1)之间,超出范围强行转成0.5
if (Float(level) <0.0||Float(level) >1.0){
tempLevel = 0.5
}
var boxSize =Int(tempLevel *100.0)
boxSize -= (boxSize % 2) +1
let imgRef =self.cgImage
var inBuffer =vImage_Buffer()
var outBuffer =vImage_Buffer()
var error =vImage_Error()
let inProvider = imgRef?.dataProvider
let inBitmapData = inProvider!.data
inBuffer.width =vImagePixelCount((imgRef?.width)!)
inBuffer.height =vImagePixelCount((imgRef?.height)!)
inBuffer.rowBytes = (imgRef?.bytesPerRow)!
// void *
inBuffer.data =UnsafeMutableRawPointer.init(mutating:CFDataGetBytePtr(inBitmapData!))
//手动申请内存
let pixelBuffer =malloc(imgRef!.height)
outBuffer.data = pixelBuffer
outBuffer.width =vImagePixelCount((imgRef?.width)!)
outBuffer.height =vImagePixelCount((imgRef?.height)!)
outBuffer.rowBytes = (imgRef?.bytesPerRow)!
error = vImageBoxConvolve_ARGB8888(&inBuffer, &outBuffer,nil,
0, 0,UInt32(boxSize),UInt32(boxSize),nil,
vImage_Flags(kvImageEdgeExtend))
if(kvImageNoError != error)
{
error = vImageBoxConvolve_ARGB8888(&inBuffer,
&outBuffer,nil,vImagePixelCount(0),vImagePixelCount(0),
UInt32(boxSize),UInt32(boxSize),nil,vImage_Flags(kvImageEdgeExtend))
}
let colorSpace =CGColorSpaceCreateDeviceRGB()
let ctx =CGContext(data: outBuffer.data,
width:Int(outBuffer.width),
height:Int(outBuffer.height),
bitsPerComponent:8,
bytesPerRow: outBuffer.rowBytes,
space: colorSpace,
bitmapInfo:CGImageAlphaInfo.premultipliedLast.rawValue)
let imageRef = ctx!.makeImage()
//手动释放内存
free(pixelBuffer)
returnUIImage(cgImage: imageRef!)
}
}
- Swift3.0中 图片高斯模糊处理
- Android 图片高斯模糊处理
- android 图片高斯模糊处理方法
- Android 图片高斯模糊处理
- Android 图片高斯模糊处理
- Glide框架高斯模糊图片处理
- 图片处理--处理成灰色图片,高斯模糊
- 图片高斯模糊
- 图片高斯模糊
- 高斯图片模糊
- 高斯模糊处理
- android图片模糊处理 利用高斯算法
- 对图片进行高斯模糊处理的办法
- 使用OpenCV进行图片模糊处理(高斯滤波器)
- iOS 处理图片 高斯模糊 image图片 blur模糊度
- iOS 图片模糊效果(高斯模糊)
- 实现图片模糊,高斯模糊
- Android 图片高期模糊处理
- Android中shape的使用
- 例解make命令、Makefile
- ORACLE jdk1.7版本的下载官方链接
- 单向不循环链表就地转置算法
- Nginx高性能http服务器的安装
- Swift3.0中 图片高斯模糊处理
- 关于shell的一些命令
- Java Reflection(九):泛型
- ThinkPHP里的命名空间解析
- ORACLE基础(五)------ 视图
- Codeforces 149C Division Into Teams 构造
- 接口传入为不同数据的不同处理
- web测试方法总结
- UITextField的创建与方法的重写