`
sking777
  • 浏览: 23783 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

iOS滤镜

阅读更多
// 对静态图像进行模糊处理
- (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中的应用。iOS平台提供了Core Image框架,这是一个强大的...

    iOS滤镜以及读取相册合集

    本资源“iOS滤镜以及读取相册合集”提供了一个实用的解决方案,包含了一系列预设的滤镜效果和相册读取功能。这个合集能够帮助开发者省去自己编写滤镜算法的繁琐工作,提升开发效率。 滤镜技术在移动应用中主要通过...

    IOS滤镜的实现

    首先,我们需要了解iOS滤镜的基本原理。滤镜效果通常基于图像处理技术,尤其是Core Image框架。Core Image是Apple提供的一套强大的图像处理和视觉效果工具,它支持实时图像过滤,可以在GPU上高效地处理图像,提供...

    iOS 滤镜属性

    以下是一些关于iOS滤镜属性的关键知识点: 1. **Core Image框架**:这是苹果提供的一套图像处理和分析的框架,支持多种滤镜效果,如模糊、色彩调整、锐化等。它可以在GPU上运行,因此处理速度较快。 2. **CIFilter...

    iOS相机滤镜处理

    在iOS开发中,相机滤镜处理是一个非常关键的领域,特别是在增强用户体验和创新应用功能方面。RGB通道滤镜和GPUImage库是实现这一目标的重要工具和技术。本文将深入探讨这两个核心概念,以及如何利用它们来为图片添加...

    IOS应用源码Demo-简单的滤镜demo-毕设学习.zip

    【标题】"IOS应用源码Demo-简单的滤镜demo-毕设学习.zip" 提供了一个适用于iOS开发的学习资源,特别适合那些正在进行毕业设计或者想要深入理解iOS应用开发的学生。这个压缩包包含了一个基本的滤镜应用程序的源代码,...

    ios滤镜使用

    在iOS开发中,滤镜(Filter)是一种强大的工具,它能帮助我们对图像进行各种视觉效果的处理,如马赛克、灰白、模糊等。本文将深入探讨如何在Objective-C(OC)环境下使用滤镜来实现这些功能。 首先,我们要知道iOS...

    iOS 相机滤镜效果

    实现相机滤镜效果,打开相册选择照片,进行滤镜展示,包括 原始" "lomo", "黑白", "怀旧", "哥特", "淡雅", 酒红", "清宁", "浪漫", "光晕", "蓝调", "梦幻", "夜色"等滤镜效果。。

    IOS应用源码之简单的滤镜demo .rar

    这个“简单的滤镜demo”压缩包包含了一个基础的iOS滤镜应用源码,可以帮助开发者理解如何在iOS应用中实现图像滤镜功能。 滤镜在iOS中的实现主要依赖于Core Image框架,它是Apple的图像处理和计算机视觉框架,提供了...

    iOS简单的图片滤镜

    在iOS开发中,图片滤镜是一项常见的功能,用于改变或增强图像的视觉效果。这个"iOS简单的图片滤镜"是一个示例项目,旨在演示如何在应用程序中实现基本的图像处理和滤镜应用。通过深入理解这个demo,开发者可以进一步...

    iOS 实时滤镜

    在iOS平台上,实时滤镜(Real-time Filter)技术是一种常用的功能,它允许用户在拍摄视频或拍照时实时应用各种视觉效果。苹果官方提供的这个demo,名为"RosyWriter",旨在帮助开发者理解和实现这一功能。下面我们将...

    ios简单的13种滤镜效果

    在iOS开发中,实现图像处理和视觉特效时,滤镜技术是不可或缺的一部分。"ios简单的13种滤镜效果"这个主题涵盖了从基础到进阶的图像处理技术,旨在为开发者提供一套完整的滤镜解决方案。这13种滤镜可能包括但不限于...

    iOS开源滤镜效果类库

    "iOS开源滤镜效果类库"是一个专为iOS平台设计的类库,旨在提供丰富的滤镜效果,以增强用户体验并提升应用的视觉吸引力。这个类库包含了17种不同的滤镜效果,开发者可以轻松集成到自己的应用中,无需从头编写复杂的...

    ios core image 常见滤镜模式

    iOS中的Core Image框架是苹果为开发者提供的一种强大的图像处理技术,它允许我们在应用程序中实时地应用各种视觉效果和滤镜。Core Image的核心在于其滤镜系统,这些滤镜可以用于调整图片的颜色、亮度、对比度,甚至...

    ios-给图片添加滤镜.zip

    在iOS开发中,给图片添加滤镜是一种常见的图像处理操作,可以用于增强照片的视觉效果或者实现各种创意设计。这个“ios-给图片添加滤镜.zip”文件很可能包含了一个简单的图片处理示例项目,名为...

    iOS动画--层的滤镜

    ### iOS动画——层的滤镜 #### 概述 在iOS开发中,动画效果是提升用户体验、增强应用吸引力的重要手段之一。《iOS动画——层的滤镜》是iOS动画系列的第六章,主要介绍了如何利用Core Animation框架中的图层属性...

    ios-GPUImage滤镜效果.zip

    "ios-GPUImage滤镜效果.zip"包含了一个名为GPUImgDemo的示例项目,用于展示GPUImage框架的多种滤镜应用。 GPUImage的核心概念是滤镜(Filter),这些滤镜可以应用在图像或者视频帧上,实现诸如色彩调整、模糊、锐化...

    一个很简单的滤镜应用.zipIOS应用例子源码下载

    以下是关于iOS滤镜应用开发的一些核心知识点: 1. **Core Image框架**:Core Image是Apple提供的一套强大的图像处理和计算机视觉工具,它可以实时地应用各种图像滤镜。开发者可以通过定义CIKernel来创建自定义滤镜...

    ios -滤镜 美颜实时滤镜

    在iOS开发中,实现美颜实时滤镜的功能是一项常见的需求,特别是在社交应用、拍照应用或者视频通话场景中。本文将详细讲解如何利用GPUImage框架来创建一个实时的美颜滤镜。 GPUImage是由Brad Larson开发的一个强大的...

    iOS Filter Control.zip

    这个“iOS Filter Control.zip”压缩包包含了一个Objective-C编写的iOS滤镜控制组件,名为“ios-filter-control-master”。该组件提供了一个自定义的UIControl子类,用于实现无图形绘制的过滤器选择功能。 1. **...

Global site tag (gtag.js) - Google Analytics