// 对静态图像进行模糊处理
- (UIImage *)blurImage:(CGImageRef)srcImg {
// 创建CIContext,这里关闭color management有助于提升性能
NSDictionary *options = @{ kCIContextWorkingColorSpace : [NSNull null] };
CIContext *mContext = [CIContext contextWithOptions:options];
CIImage *mImg = [[CIImage alloc] initWithCGImage:srcImg];
// 创建高斯模糊滤镜,ios只支持这1种模糊滤镜,并且要ios6.0以上才行,inputRadius最大100,默认10
CIFilter *mBlurFilter = [CIFilter filterWithName:@"CIGaussianBlur"];
[mBlurFilter setValue:mImg forKey:kCIInputImageKey];
[mBlurFilter setValue:@(10.0f) forKey:@"inputRadius”];
CIImage *mBlurImg = [mBlurFilter valueForKey:kCIOutputImageKey];
CGImageRef mResultCGImg = [mContext createCGImage:mBlurImg fromRect:[mBlurImg extent]];
UIImage *mResultUIImg = [UIImage imageWithCGImage:mResultCGImg];
CGImageRelease(mDestImg);
[mImg release];
return mResultUIImg;
}
// 对摄像头作模糊处理
// 使用AVFoundation实现摄像头功能并且实现AVCaptureVideoDataOutputSampleBufferDelegate托管协议
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {
CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
CVPixelBufferLockBaseAddress(imageBuffer, 0);
void *baseAddress = CVPixelBufferGetBaseAddress(imageBuffer);
size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer);
size_t width = CVPixelBufferGetWidth(imageBuffer);
size_t height = CVPixelBufferGetHeight(imageBuffer);
static CGColorSpaceRef colorSpace = nil;
if (colorSpace == nil) {
colorSpace = CGColorSpaceCreateDeviceRGB();
}
CGContextRef context = CGBitmapContextCreate(baseAddress, width, height, 8, bytesPerRow, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst);
CGImageRef quartzImage = CGBitmapContextCreateImage(context);
// 处理原始图像
UIImage *resultUIImage = [self blurImage:quartzImage];
// 更新某个UIImageView的image(隐藏摄像头的layer,盖一个UIImageView来播放滤镜处理后的图像)
...
CGImageRelease(quartzImage);
CGContextRelease(context);
CVPixelBufferUnlockBaseAddress(imageBuffer,0);
}
参考:
1. Core Image Programming Guide
https://developer.apple.com/library/ios/documentation/GraphicsImaging/Conceptual/CoreImaging/ci_performance/ci_performance.html#//apple_ref/doc/uid/TP30001185-CH10-SW2
2. Core Image Filter Reference
https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CoreImageFilterReference/Reference/reference.html#//apple_ref/doc/uid/TP40004346
分享到:
相关推荐
本项目“iOS滤镜封装”旨在提供一个高效、易用的滤镜框架,结合了人脸识别检测技术,为开发者提供了多种有趣的滤镜效果。 首先,让我们深入了解滤镜在iOS中的应用。iOS平台提供了Core Image框架,这是一个强大的...
本资源“iOS滤镜以及读取相册合集”提供了一个实用的解决方案,包含了一系列预设的滤镜效果和相册读取功能。这个合集能够帮助开发者省去自己编写滤镜算法的繁琐工作,提升开发效率。 滤镜技术在移动应用中主要通过...
首先,我们需要了解iOS滤镜的基本原理。滤镜效果通常基于图像处理技术,尤其是Core Image框架。Core Image是Apple提供的一套强大的图像处理和视觉效果工具,它支持实时图像过滤,可以在GPU上高效地处理图像,提供...
以下是一些关于iOS滤镜属性的关键知识点: 1. **Core Image框架**:这是苹果提供的一套图像处理和分析的框架,支持多种滤镜效果,如模糊、色彩调整、锐化等。它可以在GPU上运行,因此处理速度较快。 2. **CIFilter...
在iOS开发中,相机滤镜处理是一个非常关键的领域,特别是在增强用户体验和创新应用功能方面。RGB通道滤镜和GPUImage库是实现这一目标的重要工具和技术。本文将深入探讨这两个核心概念,以及如何利用它们来为图片添加...
【标题】"IOS应用源码Demo-简单的滤镜demo-毕设学习.zip" 提供了一个适用于iOS开发的学习资源,特别适合那些正在进行毕业设计或者想要深入理解iOS应用开发的学生。这个压缩包包含了一个基本的滤镜应用程序的源代码,...
在iOS开发中,滤镜(Filter)是一种强大的工具,它能帮助我们对图像进行各种视觉效果的处理,如马赛克、灰白、模糊等。本文将深入探讨如何在Objective-C(OC)环境下使用滤镜来实现这些功能。 首先,我们要知道iOS...
实现相机滤镜效果,打开相册选择照片,进行滤镜展示,包括 原始" "lomo", "黑白", "怀旧", "哥特", "淡雅", 酒红", "清宁", "浪漫", "光晕", "蓝调", "梦幻", "夜色"等滤镜效果。。
这个“简单的滤镜demo”压缩包包含了一个基础的iOS滤镜应用源码,可以帮助开发者理解如何在iOS应用中实现图像滤镜功能。 滤镜在iOS中的实现主要依赖于Core Image框架,它是Apple的图像处理和计算机视觉框架,提供了...
在iOS开发中,图片滤镜是一项常见的功能,用于改变或增强图像的视觉效果。这个"iOS简单的图片滤镜"是一个示例项目,旨在演示如何在应用程序中实现基本的图像处理和滤镜应用。通过深入理解这个demo,开发者可以进一步...
在iOS平台上,实时滤镜(Real-time Filter)技术是一种常用的功能,它允许用户在拍摄视频或拍照时实时应用各种视觉效果。苹果官方提供的这个demo,名为"RosyWriter",旨在帮助开发者理解和实现这一功能。下面我们将...
在iOS开发中,实现图像处理和视觉特效时,滤镜技术是不可或缺的一部分。"ios简单的13种滤镜效果"这个主题涵盖了从基础到进阶的图像处理技术,旨在为开发者提供一套完整的滤镜解决方案。这13种滤镜可能包括但不限于...
"iOS开源滤镜效果类库"是一个专为iOS平台设计的类库,旨在提供丰富的滤镜效果,以增强用户体验并提升应用的视觉吸引力。这个类库包含了17种不同的滤镜效果,开发者可以轻松集成到自己的应用中,无需从头编写复杂的...
iOS中的Core Image框架是苹果为开发者提供的一种强大的图像处理技术,它允许我们在应用程序中实时地应用各种视觉效果和滤镜。Core Image的核心在于其滤镜系统,这些滤镜可以用于调整图片的颜色、亮度、对比度,甚至...
在iOS开发中,给图片添加滤镜是一种常见的图像处理操作,可以用于增强照片的视觉效果或者实现各种创意设计。这个“ios-给图片添加滤镜.zip”文件很可能包含了一个简单的图片处理示例项目,名为...
### iOS动画——层的滤镜 #### 概述 在iOS开发中,动画效果是提升用户体验、增强应用吸引力的重要手段之一。《iOS动画——层的滤镜》是iOS动画系列的第六章,主要介绍了如何利用Core Animation框架中的图层属性...
"ios-GPUImage滤镜效果.zip"包含了一个名为GPUImgDemo的示例项目,用于展示GPUImage框架的多种滤镜应用。 GPUImage的核心概念是滤镜(Filter),这些滤镜可以应用在图像或者视频帧上,实现诸如色彩调整、模糊、锐化...
以下是关于iOS滤镜应用开发的一些核心知识点: 1. **Core Image框架**:Core Image是Apple提供的一套强大的图像处理和计算机视觉工具,它可以实时地应用各种图像滤镜。开发者可以通过定义CIKernel来创建自定义滤镜...
在iOS开发中,实现美颜实时滤镜的功能是一项常见的需求,特别是在社交应用、拍照应用或者视频通话场景中。本文将详细讲解如何利用GPUImage框架来创建一个实时的美颜滤镜。 GPUImage是由Brad Larson开发的一个强大的...
这个“iOS Filter Control.zip”压缩包包含了一个Objective-C编写的iOS滤镜控制组件,名为“ios-filter-control-master”。该组件提供了一个自定义的UIControl子类,用于实现无图形绘制的过滤器选择功能。 1. **...