给UIimage添加分类

 extension UIImage {
/// 高斯模糊
func gaussianBlur(var blurAmount:CGFloat) -> UIImage {
//高斯模糊参数(0-1)之间,超出范围强行转成0.5
if (blurAmount < 0.0 || blurAmount > 1.0) {
blurAmount = 0.5
} var boxSize = Int(blurAmount * )
boxSize = boxSize - (boxSize % ) + let img = self.CGImage var inBuffer = vImage_Buffer()
var outBuffer = vImage_Buffer() let inProvider = CGImageGetDataProvider(img)
let inBitmapData = CGDataProviderCopyData(inProvider) inBuffer.width = vImagePixelCount(CGImageGetWidth(img))
inBuffer.height = vImagePixelCount(CGImageGetHeight(img))
inBuffer.rowBytes = CGImageGetBytesPerRow(img)
inBuffer.data = UnsafeMutablePointer<Void>(CFDataGetBytePtr(inBitmapData)) //手动申请内存
let pixelBuffer = malloc(CGImageGetBytesPerRow(img) * CGImageGetHeight(img)) outBuffer.width = vImagePixelCount(CGImageGetWidth(img))
outBuffer.height = vImagePixelCount(CGImageGetHeight(img))
outBuffer.rowBytes = CGImageGetBytesPerRow(img)
outBuffer.data = pixelBuffer var error = vImageBoxConvolve_ARGB8888(&inBuffer,
&outBuffer, nil, vImagePixelCount(), vImagePixelCount(),
UInt32(boxSize), UInt32(boxSize), nil, vImage_Flags(kvImageEdgeExtend))
if (kvImageNoError != error)
{
error = vImageBoxConvolve_ARGB8888(&inBuffer,
&outBuffer, nil, vImagePixelCount(), vImagePixelCount(),
UInt32(boxSize), UInt32(boxSize), nil, vImage_Flags(kvImageEdgeExtend))
if (kvImageNoError != error)
{
error = vImageBoxConvolve_ARGB8888(&inBuffer,
&outBuffer, nil, vImagePixelCount(), vImagePixelCount(),
UInt32(boxSize), UInt32(boxSize), nil, vImage_Flags(kvImageEdgeExtend))
}
} let colorSpace = CGColorSpaceCreateDeviceRGB()
let ctx = CGBitmapContextCreate(outBuffer.data,
Int(outBuffer.width),
Int(outBuffer.height),
,
outBuffer.rowBytes,
colorSpace,
CGImageAlphaInfo.PremultipliedLast.rawValue) let imageRef = CGBitmapContextCreateImage(ctx) //手动申请内存
free(pixelBuffer)
return UIImage(CGImage: imageRef!)
}
}

iOS实现高斯模糊效果(Swift版本)的更多相关文章

  1. iOS开发-图片高斯模糊效果

    iOS开发的时候有的时候需要将图片设置模糊,或者通过点击下拉方法,去除模糊,一切都是为了应用更受用户欢迎,iOS7之后半透明模糊效果得到大范围使用的比较大,现在也可以看到很多应用局部用到了图片模糊效果 ...

  2. iOS swift版本无限滚动轮播图

    之前写过oc版本的无限滚动轮播图,现在来一个swift版本全部使用snapKit布局,数字还是pageConrrol样式可选 enum typeStyle: Int { case pageContro ...

  3. 窥探Swift系列博客说明及其Swift版本间更新

    Swift到目前为止仍在更新,每次更新都会推陈出新,一些Swift旧版本中的东西在新Swift中并不适用,而且新版本的Swift会添加新的功能.到目前为止,Swift为2.1版本.去年翻译的Swift ...

  4. swift版本拼图游戏项目源码

    现学现做的第一个swift版本拼图游戏demo 常规模式,对换模式任你选择, 用到了花瓣的API,各种萌妹子~

  5. Swift版本UIWebView长按保存图片

    起因 最近需要做个IOS的壳子,用到长按保存图片的功能,发现百度出来的全是OC语法的例子,很多都不是全面,只能自己写一份Swift版本的,图片下面附上Github地址 效果图 Github地址:htt ...

  6. Android 高仿微信语音聊天页面高斯模糊效果

    目前的应用市场上,使用毛玻璃效果的APP随处可见,比如用过微信语音聊天的人可以发现,语音聊天页面就使用了高斯模糊效果. 先看下效果图: 仔细观察上图,我们可以发现,背景图以用户头像为模板,对其进行了高 ...

  7. 升级xcode8之后出现报错提示,提示swift版本问题

    最近Xcode升级了,出现了各种蛋疼的错误提示,今天遇到个导入框架出现了提示Swift版本的问题,具体如下: "Use Legacy Swift Language Version" ...

  8. iOS Swift-简单值(The Swift Programming Language)

    iOS Swift-简单值(The Swift Programming Language) 常量的声明:let 在不指定类型的情况下声明的类型和所初始化的类型相同. //没有指定类型,但是初始化的值为 ...

  9. Swift技术之如何在iOS 8下使用Swift设计一个自定义的输入法 (主要是NSLayoutConstraint 的使用)

    当前位置: > Swift新手入门 > Swift技术之如何在iOS 8下使用Swift设计一个自定义的输入法 时间:2014-09-10 16:49来源:未知 作者:啊成 举报 点击:5 ...

随机推荐

  1. Material Design学习-----TextInputLayout

    TextInputLayout是为EditText提供了一种新的实现和交互方式.在传统的EditText中存在一个hint属性,是说在editext中没有内容时,默认的提示信息.当想edittext中 ...

  2. 循环神经网络(RNN)模型与前向反向传播算法

    在前面我们讲到了DNN,以及DNN的特例CNN的模型和前向反向传播算法,这些算法都是前向反馈的,模型的输出和模型本身没有关联关系.今天我们就讨论另一类输出和模型间有反馈的神经网络:循环神经网络(Rec ...

  3. 【SysML】用例图

    引言 对于系统工程师来说,设计用例图是一种极为常见的建模活动.用例图是一种黑盒视图,通过向读者传递一系列的用例以及相关的参与者,对系统对外提供的服务或系统具备的行为进行建模.在详细讨论SysML的用例 ...

  4. javascript的字符串判断方法

    Javascript中判断符号主要有:==.!=.===.!== ==.!=这两个符号在判断之前会先对变量类型进行转换,如果类型相同会再比较值; ===.!==这是直接判断两个变量的类型,如果类型不一 ...

  5. macOS apache配置及开启虚拟服务器的开启,apache开启重写模式

    今天把自己的mac系统升到最新版,但是,apache却不能用了,因为mac上的apache是系统自带的,因为是mac目前的最新系统,所以出现了好多问题,整理了一下午也没有啥进展,最后还是把原来的在云盘 ...

  6. Binary Search Tree Iterator leetcode

    Implement an iterator over a binary search tree (BST). Your iterator will be initialized with the ro ...

  7. Android: Toolbar、AppBarLayout

    ToolBar是google退出的一个应用程序动作条 包括: 设置导航栏图标 设置应用程序Logo 设置标题 设置子标题 添加各种自定义控件 添加动作条菜单 API:https://developer ...

  8. MySQL常用函数及日期

    一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x的最小整数 ...

  9. border-radius IE8兼容处理

    根据canisue(http://caniuse.com/#search=border-radius),border-radius兼容性如下图所示: 测试代码: <!DOCTYPE html&g ...

  10. Butter Knife使用详解

    Butter Knife Github地址: https://github.com/JakeWharton/butterknife 官方说明给出的解释是 Bind Android views and ...