【iOS】iOS下高斯模糊效果的实现
来源:互联网 发布:中国可备案的域名后缀 编辑:程序博客网 时间:2024/05/30 05:40
其实有很多种实现方式,但是没必要了解那么多,简单实用就行,选取一种性能相对来说比较好的方式
效果图如下(高斯0.1):
代码:
需要导入
#import <Accelerate/Accelerate.h>
UIImage *image = [UIImage imageNamed:@"44.jpg"];
image = [self blurryImage:image withBlurLevel:0.1];
方法代码:
#pragma mark - 高斯- (UIImage *)blurryImage:(UIImage *)image withBlurLevel:(CGFloat)blur { if (blur < 0.f || blur > 1.f) { blur = 0.5f; } int boxSize = (int)(blur * 100); boxSize = boxSize - (boxSize % 2) + 1; CGImageRef img = image.CGImage; vImage_Buffer inBuffer, outBuffer; vImage_Error error; void *pixelBuffer; CGDataProviderRef inProvider = CGImageGetDataProvider(img); CFDataRef inBitmapData = CGDataProviderCopyData(inProvider); inBuffer.width = CGImageGetWidth(img); inBuffer.height = CGImageGetHeight(img); inBuffer.rowBytes = CGImageGetBytesPerRow(img); inBuffer.data = (void*)CFDataGetBytePtr(inBitmapData); pixelBuffer = malloc(CGImageGetBytesPerRow(img) * CGImageGetHeight(img)); if(pixelBuffer == NULL) NSLog(@"No pixelbuffer"); outBuffer.data = pixelBuffer; outBuffer.width = CGImageGetWidth(img); outBuffer.height = CGImageGetHeight(img); outBuffer.rowBytes = CGImageGetBytesPerRow(img); error = vImageBoxConvolve_ARGB8888(&inBuffer, &outBuffer, NULL, 0, 0, boxSize, boxSize, NULL, kvImageEdgeExtend); if (error) { NSLog(@"error from convolution %ld", error); } CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef ctx = CGBitmapContextCreate( outBuffer.data, outBuffer.width, outBuffer.height, 8, outBuffer.rowBytes, colorSpace, kCGImageAlphaNoneSkipLast); CGImageRef imageRef = CGBitmapContextCreateImage (ctx); UIImage *returnImage = [UIImage imageWithCGImage:imageRef]; //clean up CGContextRelease(ctx); CGColorSpaceRelease(colorSpace); free(pixelBuffer); CFRelease(inBitmapData); CGColorSpaceRelease(colorSpace); CGImageRelease(imageRef); return returnImage;}
1 0
- 【iOS】iOS下高斯模糊效果的实现
- iOS 模糊效果的实现
- iOS模糊效果的实现
- iOS实现模糊效果
- iOS 模糊效果实现
- iOS 实现模糊效果
- iOS模糊效果实现
- iOS 模糊效果实现
- 【转】ios 半透明模糊效果的实现
- IOS实现图片的模糊效果
- iOS 如何实现模糊效果
- iOS 如何实现模糊效果
- iOS中实现模糊效果
- iOS 视图的模糊效果
- 使用GPUImage实现iOS 7的模糊效果
- iOS 8 模糊视图(毛玻璃效果)的简单实现UIVisualEffectView
- 使用GPUImage实现iOS 7的模糊效果
- iOS开发中模糊效果的实现方案
- canvas绘制旋转转盘
- PDF文件怎样合并分割
- Android Studio错误Error:(23, 17) Failed to resolve: junit:junit:4.12解决方案
- VC6.0 Window7结束调试时程序无法结束的问题解决办法
- HDU 2188 悼念512汶川大地震遇难同胞――选拔志愿者(巴什博奕)
- 【iOS】iOS下高斯模糊效果的实现
- 快照技术原理
- Kaggle 手写识别题
- 【Leetcode】1. Two Sum
- 关于mybatis like
- yield 是什么?
- spring中的@Configration详解
- 架构设计:系统间通信(18)——服务治理与Dubbo 下篇(继续分析)
- 新的测试项