iOS实现高斯模糊效果(Swift版本)
给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版本)的更多相关文章
- iOS开发-图片高斯模糊效果
iOS开发的时候有的时候需要将图片设置模糊,或者通过点击下拉方法,去除模糊,一切都是为了应用更受用户欢迎,iOS7之后半透明模糊效果得到大范围使用的比较大,现在也可以看到很多应用局部用到了图片模糊效果 ...
- iOS swift版本无限滚动轮播图
之前写过oc版本的无限滚动轮播图,现在来一个swift版本全部使用snapKit布局,数字还是pageConrrol样式可选 enum typeStyle: Int { case pageContro ...
- 窥探Swift系列博客说明及其Swift版本间更新
Swift到目前为止仍在更新,每次更新都会推陈出新,一些Swift旧版本中的东西在新Swift中并不适用,而且新版本的Swift会添加新的功能.到目前为止,Swift为2.1版本.去年翻译的Swift ...
- swift版本拼图游戏项目源码
现学现做的第一个swift版本拼图游戏demo 常规模式,对换模式任你选择, 用到了花瓣的API,各种萌妹子~
- Swift版本UIWebView长按保存图片
起因 最近需要做个IOS的壳子,用到长按保存图片的功能,发现百度出来的全是OC语法的例子,很多都不是全面,只能自己写一份Swift版本的,图片下面附上Github地址 效果图 Github地址:htt ...
- Android 高仿微信语音聊天页面高斯模糊效果
目前的应用市场上,使用毛玻璃效果的APP随处可见,比如用过微信语音聊天的人可以发现,语音聊天页面就使用了高斯模糊效果. 先看下效果图: 仔细观察上图,我们可以发现,背景图以用户头像为模板,对其进行了高 ...
- 升级xcode8之后出现报错提示,提示swift版本问题
最近Xcode升级了,出现了各种蛋疼的错误提示,今天遇到个导入框架出现了提示Swift版本的问题,具体如下: "Use Legacy Swift Language Version" ...
- iOS Swift-简单值(The Swift Programming Language)
iOS Swift-简单值(The Swift Programming Language) 常量的声明:let 在不指定类型的情况下声明的类型和所初始化的类型相同. //没有指定类型,但是初始化的值为 ...
- Swift技术之如何在iOS 8下使用Swift设计一个自定义的输入法 (主要是NSLayoutConstraint 的使用)
当前位置: > Swift新手入门 > Swift技术之如何在iOS 8下使用Swift设计一个自定义的输入法 时间:2014-09-10 16:49来源:未知 作者:啊成 举报 点击:5 ...
随机推荐
- C#计算表达式(仿计算器功能)
一.用MSScriptControl在C#中执行JavaScript代码javascript中有个eval方法用过的人都知道他的方便和强大之处.在C#中,我们也可以通过Com组件来执行一段javasc ...
- spl之文件处理
spl是php标准库的缩写 spl文件处理类库: SplFileInfo //是一个类用以获取文件的各种信息SplFileInfo的所有方法如下 方法名 - --- 说明2 ...
- 偶尔发生File has been moved - cannot be read again,其实是个误解
使用poi上传.xlsx文件时,出现如下错误 Exception in thread "pool-3-thread-2" java.lang.IllegalStateExcepti ...
- Docker存储驱动之ZFS简介
ZFS是下一代的文件系统,支持了很多存储高级特性,如卷管理.快照.和校验.压缩和重复删除技术.拷贝等. ZFS由Sun公司创建,现属于Oracle,ZFS是开源的,并基于CDDL license.因为 ...
- java入门知识
Java特性 简单.面向对象.支持网络.解释性.健壮性.安全性.高性能.可移植(跨平台) Java特点 开源.免费.跨平台.面向对象 应用平台 JavaSE(standard edition)(c/s ...
- js中call、apply、bind那些事
前言 回想起之前的一些面试,几乎每次都会问到一个js中关于call.apply.bind的问题,比如- 怎么利用call.apply来求一个数组中最大或者最小值 如何利用call.apply来做继承 ...
- 476. Number Complement
题目 Given a positive integer, output its complement number. The complement strategy is to flip the bi ...
- java关于map用来筛选的用法
我有一个实体 PropTemplateItem{id,名称,父节点,模版id},父节点为root是定义为根节点. 例如数据: 001,颜色,root,123 002,白色,001,123 003,红色 ...
- 查看某个ip地址接在交换机的哪个接口
show ip interface brief 1.如果交换机上没有做VLAN 可以直接使用:show arp MPG3560#sh arp Protocol Address Age (min) Ha ...
- CSS学习笔记汇总
CSS语法格式:一个css规则,由一个选择器和一个格式声明语句构成 例如:h1{color:red; font-size:14px;} CSS选择器: 1.基本选择器 1)* 号选择器:通配符, ...