首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【iOS开发】生成高斯模糊效果背景

做开发时,总是使用系统默认的白色背景会显得有些生硬,所以当我们以展示图片为目的时,不妨将图片放大、再做高斯模糊处理以作为背景。 我把这个处理过程用 Swift 封装成了一个函数,供大家参考。...//创建高斯模糊效果的背景 func createBlurBackground (image:UIImage,view:UIView,blurRadius:Float) { //处理原始NSData...数据 let originImage = CIImage(CGImage: image.CGImage ) //创建高斯模糊滤镜 let filter = CIFilter(name...View的下层 } 三个参数分别为:image(原始清晰图片)、view(你需要将生成的模糊背景插入在这个view的下层当做背景)、blurRadius(高斯模糊处理的模糊半径) 其中 let context...= CIContext(options: nil) 这一句,在真机测试时,会引起控制台报错 ?

2.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS高斯模糊&毛玻璃效果开发探索

    在 iOS上怎样快速实现图片高斯模糊?...iOS开发中有的时候需要将图片设置模糊,来实现特定的效果获取更好的用户体验, iOS7之后半透明模糊效果得到大范围使用的比较大,现在也可以看到很多应用局部用到了图片模糊效果,可以通过高斯模糊和毛玻璃效果达到图片模糊效果...高斯模糊效果 1....图像可以认为是由向量或者矩阵数据构成的,Accelerate里既然提供了高效的数学运算API,自然就能方便我们对图像做各种各样的处理 ,模糊算法使用的是vImageBoxConvolve_ARGB8888...链接地址:https://github.com/BradLarson/GPUImage 区别: 效果:第一种Core Image设置模糊之后会在周围产生白边,vImage使用不存在任何问题; 性能:图像模糊处理属于复杂的计算

    4.7K20

    图文并茂带你走进Core Image

    比如高斯模糊、焦点模糊、运动模糊 */ public let kCICategoryBlur: String /* 处理视频图像 */ public let kCICategoryVideo: String...例如,一个模糊图像由于采样超出了输入图像的边缘,围绕在其边界外还会有一些额外的像素。...let uiImage = UIImage(cgImage: cgImage) return uiImage } 当然,封装的方法你需要将KVC的关键字和值都通过外面传入...最后要在视图上显示的时候,又返回 GPU 进行渲染。这样在 GPU 和 CPU 之前来回切换,会造成很严重的性能损耗。创建 context,那么它内部的渲染器会根据设备最优选择。...当然,这个前提是利用实时渲染的特效,而不是每次操作都产生一个 UIImage,然后再设置到视图上。 它的渲染过程大致如下: ?

    2K40

    iOS动画开发之五——炫酷的粒子效果 原

    其中常用的属性如下: @property(copy) NSArray *emitterCells;     粒子单元数组,例如你在绘制火焰的效果时,你可以创建两个单元,一个单元负责烟雾,一个单元负责火苗...@property CGFloat emitterDepth;     发射器的深度,在某些模式下会产生立体效果 @property(copy) NSString *emitterShape;     ...    粒子的运动速度 @property float scale;     粒子的缩放大小 @property float spin;     粒子的旋转位置 @property unsigned...CGFloat scaleSpeed; 缩放大小,缩放容差和缩放速度 @property CGFloat spin; @property CGFloat spinRange; 旋转度与旋转容差 @property...id contents; 渲染粒子,可以设置为一个CGImage的对象 @property CGRect contentsRect; 渲染的范围 三、让我们来“火”一把         通过上面的介绍,

    1.3K20

    CALayer的寄宿图

    在iOS当中,所有的视图都是从一个叫做UIView的基类派生而来,UIView可以处理触摸事件,支持基于CoreGraphics的绘图,可以做仿射变换(例如旋转或缩放),或者简单的滑动以及渐变动画。...当我们将layer的contentsGravity属性值设置为kCAGravityResizeAspect时,contentsScale并不会对寄宿图的大小产生任何影响,因为本身就是拉伸图片以适应图层;...但是当我们将layer的contentsGravity属性值设置为kCAGravityCenter(这个值并不会拉伸图片)时,contentsScale的值就会对寄宿图的大小产生明显影响。...当图片大小超过了视图的边界时,默认情况下,UIView会绘制超过边界的内容或者子视图,在CALayer下也是这样的。...contentsRect最有趣的一个用法是image sprites(图片拼合)。试想一下,如果我们需要将四张图片拼合在一块展示,我们会怎么做?

    1K20

    【IOS开发高级系列】异步绘制专题

    (UIImage* image, 0.5)读取数据时,返回的数据大小只有11KB多,大大压缩了图片的数据量 ,而且从视角角度看,图片的质量并没有明显的降低.因此,在读取图片数据内容时,建议优先使用UIImageJPEGRepresentation...,并可根据自己的实际使用场景,设置压缩系数,进一步降低图片数据量大小. 1.4 图片缩放 图片缩放的三个函数 http://www.cnblogs.com/pengyingh/articles/2355052....html 程序中一个界面用到了好多张大图,内存报警告了,所以做了一下图片缩放,在网上找了别人写的代码 //把图片做等比缩放,生成一个新图片 - (UIImage *)imageByScalingProportionallyToSize...html 5 开发技巧 5.1 常见问题 5.1.1 CGBitmapContextCreateImage绘制后内存泄露导致内存告警 CGBitmapContextCreateImage绘制的图片会造成内存无法释放...问题原因: 将Text做宽高计算时,高度值容易得出小数数值,而页面绘制均是基于整数像素点绘制,对于小数点部分,系统会做舍去处理(即便有缩放),固留下高度不定的未绘制区域(为黑色)。

    1.4K20

    【IOS开发进阶系列】APP性能优化专题

    [image release]; // MRR情况下调⽤用 1.3    图片裁切 1.3.1  UIImage自定义绘制的四种方法 ///方法中会自动做缩放处理 +(void) getBitmapImage...        }         CGRect rect = CGRectMake(0, 0, imageSize.width, imageSize.height);         //坐标系统已经自动考虑了缩放因素...3.1.1  文件结构优化         文件要保存数据,应该是结构化的,苹果中的plist文件就是很好的结构化文件。plist文件结构是层次模型的树形结构,层次的深浅会影响读取/写入的速度。...尽量不用使用Like模糊匹配查询,如果可能则使用“=”号查询。...该级别是应用程序发布时候的最理想级别,在增加文件大小的情况下提供了最大优化。 l  -O3,是在-O2和-O1级别上再进行优化,该级别可能会提高程序的运行速度,但是也会增加文件的大小。

    33220

    AVFoundation框架解析看这里(7)- AVAssetImageGenerator

    在很多视频软件中,基本都会提供跟随鼠标进度显示画面,裁剪视频时预览关键帧等功能,实际上,这种类似的功能都是AVAssetImageGenerator的功劳。...*/ open var asset: AVAsset { get } /* 指定在从asset中提取图像时是否应用track的preferredTransform(AVAssetTrack preferredTransform...*/ open var appliesPreferredTrackTransform: Bool /* 指定生成的图像的最大尺寸。默认(CGSizeZero)是asset的未缩放尺寸。...通过kCMTimeZero for toleranceBefore和toleranceAfter请求帧精确图像生成;这可能会导致额外的解码延迟。...throws -> CGImage /* * 生成一系列图片 * requestedTimes: NSValue类型的数组,数组里每一个对象都是CMTime结构体,表示你想要生成的图片在视频中的时间点

    1.3K30

    屏幕成像原理以及FPS优化Tips

    Vsync会以固定的频率产生,不受软件的影响(只要有电就会产生)。这个固定的频率叫做屏幕刷新频率(refresh rate或者Scanning Frequency)。通常情况下,这个频率是60hz。...复制操作完成后屏幕开始下一个刷新周期,即将刚复制到 Frame Buffer 的数据显示到屏幕上。 在这种模型下,只有当 VSync 信号产生时,CPU/GPU 才会开始绘制。...屏幕进入下一个刷新周期时,从 Frame Buffer 中取出的是“老”数据,而非正在产生的帧数据,即两个刷新周期显示的是同一帧数据。...避免UIView属性的频繁调整或设置,频繁冗余的设置属性frame、bounds、transform会频繁的浪费CPU的计算能力,会导致额外的CPU开销。...绘制到上下文会触发解码 CGContextDrawImage(context, CGRectMake(0, 0, width, height), cgImage); /

    9.6K73

    IOS开发系列——异步绘制专题

    (UIImage* image, 0.5)读取数据时,返回的数据大小只有11KB多,大大压缩了图片的数据量 ,而且从视角角度看,图片的质量并没有明显的降低.因此,在读取图片数据内容时,建议优先使用UIImageJPEGRepresentation...,并可根据自己的实际使用场景,设置压缩系数,进一步降低图片数据量大小. 1.4 图片缩放 图片缩放的三个函数 http://www.cnblogs.com/pengyingh/articles/2355052....html 程序中一个界面用到了好多张大图,内存报警告了,所以做了一下图片缩放,在网上找了别人写的代码 //把图片做等比缩放,生成一个新图片 1 - (UIImage*) imageByScalingProportionallyToSize...开发技巧 5.1 常见问题 5.1.1 CGBitmapContextCreateImage绘制后内存泄露导致内存告警 1、 CGBitmapContextCreateImage绘制的图片会造成内存无法释放...(dataRef); returndecompressedImage; } 5.1.2 绘制时底部出现高度不定的细微黑线 问题原因: 将Text做宽高计算时,高度值容易得出小数数值

    1.5K20

    iOS 页面渲染 - UIView & CALayer

    属性改变时 layer 会向 view 请求一个动作,而一般情况下 view 将返回一个 NSNull,只有当属性改变发生在动画 block 中时,view 才会返回实际的动作。...iOS 中将该缓存区保存的图片称为 寄宿图。而当设备屏幕进行刷新时,会从 CALayer 中读取生成的 bitmap, 进而呈现到屏幕上。...但是在实践中,如果 content 的值不是 CGImage ,得到的图层将是空白的。 既然如此,为什么要将 contents 的属性类型定义为 id 而非 CGImage。...系统绘制流程 系统绘制流程 上图本质就是创建一个 backing storage 的流程,归纳一下: 系统绘制时, 会先创建 backing storage(CGContextRef),我们可以理解为...AutoLayout 在完成布局后,所计算出来的位置和尺寸内部修改的值是 center 和 bounds 两个属性,因此最终的展示效果不会因为仿射变换而产生异常。

    1.9K20

    【IOS开发基础系列】SDWebImageDownloader专题

    7、如果上一操作从硬盘读取到了图片,将图片添加到内存缓存中(如果空闲内存过小,会先清空内存缓存)。...19、如果是在iOS上运行,SDImageCache 在初始化的时候会注册notification 到 UIApplicationDidReceiveMemoryWarningNotification以及...;     2、加载大量图片时,SD会将图片进行解压(加快渲染速度,但是内存会增大差不多一倍),然后将解压后的Image数据缓存在内存中,从而导致内存暴涨; 以下代码具有内存泄露问题:     // 原始方案...这句话很重要image =[[UIImage alloc] initWithData:data]; SDWebImage把下载下来的data直接转成image,然后没做等比缩放直接存起来使用。...        在使用SDWebImage加载较多图片造成内存警告时,定期调用  [[SDImageCache sharedImageCache] setValue: nil forKey: @"memCache

    77520
    领券