iOS中滤镜的使用(二)滤镜组合

原创 2015年07月09日 11:18:49

iOS中滤镜的使用(二)

滤镜组合



首先 要加载图片并转化为CIImage

CIImage *ciImage = [[CIImage alloc] initWithImage:[UIImage imageNamed:@"IMG_0160"]];

其次,创建filter滤镜

 CIFilter *filterOne = [CIFilter filterWithName:@"CIPixellate"];//马赛克滤镜

    NSLog(@"%@",filterOne.attributes);
    [filterOne setValue:ciImage  forKey:kCIInputImageKey];
    [filterOne setDefaults];
    CIImage *outImage = [filterOne valueForKey:kCIOutputImageKey];

    CIFilter *filterTwo = [CIFilter filterWithName:@"CIHueAdjust"];//饱和度滤镜

    [filterTwo setValue:outImage  forKey:kCIInputImageKey];
    [filterTwo setDefaults];

    NSLog(@"%@",filterTwo.attributes);//打印可修改的属性
    [filterTwo setValue:@(3.14) forKey:kCIInputAngleKey];//位置不能改变

    CIImage *outImageTwo = [filterTwo valueForKey:kCIOutputImageKey];

然后,用CIContext将滤镜中的图片渲染出来,原因,导出图片过过程中用到CGImageRef。

CIContext *context = [CIContext contextWithOptions:nil];

CGImageRef cgImage = [context createCGImage:outImage fromRect:[outImage extent]];

最后,导出图片,注意内存的释放

 UIImage *showImage = [UIImage imageWithCGImage:cgImage];

CGImageRelease(cgImage);

剩下的工作就是加载马赛克图片了

 UIImageView *imageView = [[UIImageView alloc] initWithFrame: CGRectMake(0, 0, 600, 400)];
imageView.image = showImage;
imageView.center = self.view.center;
[self.view addSubview:imageView];

而马赛克Filter的属性有如下:
马赛克属性

饱和度Filter的属性如下:
饱和度属性

总的代码如下:

 //0:导入图片

    CIImage *ciImage = [[CIImage alloc] initWithImage:[UIImage imageNamed:@"IMG_0160"]];
    //1:创建filter组合滤镜
      CIFilter *filterOne = [CIFilter filterWithName:@"CIPixellate"];//马赛克滤镜

    NSLog(@"%@",filterOne.attributes);
    [filterOne setValue:ciImage  forKey:kCIInputImageKey];
    [filterOne setDefaults];
    CIImage *outImage = [filterOne valueForKey:kCIOutputImageKey];

    CIFilter *filterTwo = [CIFilter filterWithName:@"CIHueAdjust"];//饱和度滤镜

    [filterTwo setValue:outImage  forKey:kCIInputImageKey];
    [filterTwo setDefaults];

    NSLog(@"%@",filterTwo.attributes);//打印可修改的属性
    [filterTwo setValue:@(3.14) forKey:kCIInputAngleKey];//位置不能改变

    CIImage *outImageTwo = [filterTwo valueForKey:kCIOutputImageKey];


    //2:用CIContext将滤镜中的图片渲染出来

    CIContext *context = [CIContext contextWithOptions:nil];

    CGImageRef cgImage = [context createCGImage:outImage fromRect:[outImage extent]];

    //3:导出图片

    UIImage *showImage = [UIImage imageWithCGImage:cgImage];

    CGImageRelease(cgImage);

    //4:加载出来

    UIImageView *imageView = [[UIImageView alloc] initWithFrame: CGRectMake(0, 0, 600, 400)];
    imageView.image = showImage;
    imageView.center = self.view.center;
    [self.view addSubview:imageView];

滤镜组合的种类有如下:
//Iphone中目前可用的
CIAdditionCompositing //影像合成

CIAffineTransform           //仿射变换

CICheckerboardGenerator       //棋盘发生器

CIColorBlendMode              //CIColor混合模式

CIColorBurnBlendMode          //CIColor燃烧混合模式

CIColorControls 

CIColorCube                   //立方体

CIColorDodgeBlendMode         //CIColor避免混合模式

CIColorInvert                 //CIColor反相

CIColorMatrix                 //CIColor矩阵

CIColorMonochrome             //黑白照

CIConstantColorGenerator      //恒定颜色发生器

CICrop                        //裁剪

CIDarkenBlendMode             //亮度混合模式

CIDifferenceBlendMode         //差分混合模式

CIExclusionBlendMode          //互斥混合模式

CIExposureAdjust              //曝光调节

CIFalseColor                  //伪造颜色

CIGammaAdjust                 //灰度系数调节

CIGaussianGradient            //高斯梯度

CIHardLightBlendMode          //强光混合模式

CIHighlightShadowAdjust       //高亮阴影调节

CIHueAdjust                   //饱和度调节

CIHueBlendMode                //饱和度混合模式

CILightenBlendMode            

CILinearGradient              //线性梯度

CILuminosityBlendMode         //亮度混合模式

CIMaximumCompositing          //最大合成

CIMinimumCompositing          //最小合成

CIMultiplyBlendMode           //多层混合模式

CIMultiplyCompositing         //多层合成

CIOverlayBlendMode            //覆盖叠加混合模式

CIRadialGradient              //半径梯度

CISaturationBlendMode         //饱和度混合模式

CIScreenBlendMode             //全屏混合模式

CISepiaTone                   //棕黑色调

CISoftLightBlendMode          //弱光混合模式

CISourceAtopCompositing       

CISourceInCompositing 

CISourceOutCompositing 

CISourceOverCompositing 

CIStraightenFilter            //拉直过滤器

CIStripesGenerator            //条纹发生器

CITemperatureAndTint          //色温

CIToneCurve                   //色调曲线

CIVibrance                    //振动

CIVignette                    //印花

CIWhitePointAdjust            //白平衡调节

官方文档中列表:

CICategoryBlur
CIBoxBlur
CIDiscBlur
CIGaussianBlur
CIMedianFilter
CIMotionBlur
CINoiseReduction
CIZoomBlur

CICategoryColorAdjustment
CIColorControls
CIColorMatrix
CIExposureAdjust
CIGammaAdjust
CIHueAdjust
CITemperatureAndTint
CIToneCurve
CIVibrance
CIWhitePointAdjust

CICategoryColorEffect
CIColorCube
CIColorInvert
CIColorMap
CIColorMonochrome
CIColorPosterize
CIFalseColor
CIMaskToAlpha
CIMaximumComponent
CIMinimumComponent
CISepiaTone

CICategoryCompositeOperation
CIAdditionCompositing
CIColorBlendMode
CIColorBurnBlendMode
CIColorDodgeBlendMode
CIDarkenBlendMode
CIDifferenceBlendMode
CIExclusionBlendMode
CIHardLightBlendMode
CIHueBlendMode
CILightenBlendMode
CILuminosityBlendMode
CIMaximumCompositing
CIMinimumCompositing
CIMultiplyBlendMode
CIMultiplyCompositing
CIOverlayBlendMode
CISaturationBlendMode
CIScreenBlendMode
CISoftLightBlendMode
CISourceAtopCompositing
CISourceInCompositing
CISourceOutCompositing
CISourceOverCompositing

CICategoryDistortionEffect
CIBumpDistortion
CIBumpDistortionLinear
CICircleSplashDistortion
CICircularWrap
CIDisplacementDistortion
CIGlassDistortion
CIGlassLozenge
CIHoleDistortion
CIPinchDistortion
CITorusLensDistortion
CITwirlDistortion
CIVortexDistortion

CICategoryGenerator
CICheckerboardGenerator
CIConstantColorGenerator
CILenticularHaloGenerator
CIRandomGenerator
CIStarShineGenerator
CIStripesGenerator
CISunbeamsGenerator

CICategoryGeometryAdjustment
CIAffineTransform
CICrop
CILanczosScaleTransform
CIPerspectiveTransform
CIStraightenFilter

CICategoryGradient
CIGaussianGradient
CILinearGradient
CIRadialGradient

CICategoryHalftoneEffect
CICircularScreen
CICMYKHalftone
CIDotScreen
CIHatchedScreen
CILineScreen

CICategoryReduction
CIAreaAverage
CIAreaHistogram
CIRowAverage
CIColumnAverage
CIAreaMaximum
CIAreaMinimum
CIAreaMaximumAlpha
CIAreaMinimumAlpha

CICategorySharpen
CISharpenLuminance
CIUnsharpMask

CICategoryStylize
CIBlendWithMask
CIBloom
CIComicEffect
CICrystallize
CIEdges
CIEdgeWork
CIGloom
CIHeightFieldFromMask
CIHexagonalPixellate
CIHighlightShadowAdjust
CILineOverlay
CIPixellate
CIPointillize
CIShadedMaterial
CISpotColor
CISpotLight

CICategoryTileEffect
CIAffineClamp
CIAffineTile
CIEightfoldReflectedTile
CIFourfoldReflectedTile
CIFourfoldRotatedTile
CIFourfoldTranslatedTile
CIGlideReflectedTile
CIKaleidoscope
CIOpTile
CIParallelogramTile
CIPerspectiveTile
CISixfoldReflectedTile
CISixfoldRotatedTile
CITriangleTile
CITwelvefoldReflectedTile

CICategoryTransition
CIBarsSwipeTransition
CICopyMachineTransition
CIDisintegrateWithMaskTransition
CIDissolveTransition
CIFlashTransition
CIModTransition
CIPageCurlTransition
CIRippleTransition
CISwipeTransition

iOS GPUImage之GPUImageFilterPipeline组合滤镜(4)

实现滤镜的组合(又称混合滤镜)示例:为静态图片添加组合滤镜 注意:组合滤镜的添加顺序不同,处理结果也不同!代码: // // ViewController.m // GPUImageTest //...
  • MerryGOOT
  • MerryGOOT
  • 2016年07月01日 23:29
  • 1718

GPUImage 简单使用(二)组合滤镜使用

这里组合滤镜我使用的是GPUImageFilterPipeline这个类  一、步骤: 1、创建图片处理类 GPUImagePicture 把图片传进去stillImage GPUImage...
  • Edison_hou
  • Edison_hou
  • 2016年02月25日 19:11
  • 4020

iOS GPUImage之GPUImageFilterGroup组合滤镜(5)

【提醒】 添加滤镜的顺序不同,效果也不同!示例:使用GPUImageFilterGroup为GPUImagePicture添加组合滤镜代码: // // ViewController.m...
  • MerryGOOT
  • MerryGOOT
  • 2016年07月02日 00:08
  • 3962

iOS实现渐变背景色的三种方法

In some particular circumstances, we want to use a gradient background view. As far as my knowledge ...
  • lgouc
  • lgouc
  • 2015年08月03日 13:29
  • 28442

关于着色器LinearGradient的使用

LinearGradient我们可以将之译为线型渐变、线型渲染等,译成什么不重要,重要的是它的显示效果是什么样子,今天我们就一起来看看。先来看看LinearGradient的构造方法: /** ...
  • u012702547
  • u012702547
  • 2016年03月07日 19:53
  • 13308

iOS 视图颜色渐变详解

// 初始化一个试图 (方法一) UIView *view = [[UIView alloc] initWithFrame:CGRectMake(10, 100, 200, 30)]; ...
  • mazegong
  • mazegong
  • 2016年04月26日 11:58
  • 1480

iOS Core Image 复杂的滤镜

在上一篇中几乎没有对滤镜进行更复杂的操作,都是直接把inputImage扔给CIFilter而已,而Core Image实际上还能对滤镜进行更加细粒度的控制,我们在新的工程中对其进行探索。为此,我重新...
  • u013192575
  • u013192575
  • 2015年09月24日 14:18
  • 754

CIContext drawImage 速度很慢

CIContext drawImage 速度很慢
  • u010963658
  • u010963658
  • 2016年09月08日 16:56
  • 903

iOS8 Core Image In Swift:更复杂的滤镜

Core Image是一个很强大的框架。它可以让你简单地应用各种滤镜来处理图像,比如修改鲜艳程度, 色泽, 或者曝光。 它利用GPU(或者CPU)来非常快速、甚至实时地处理图像数据和视频的帧。并且隐藏...
  • zhangao0086
  • zhangao0086
  • 2014年09月12日 00:52
  • 23211

iOS中滤镜的使用(二)滤镜组合

iOS中滤镜的使用(二)滤镜组合首先 要加载图片并转化为CIImageCIImage *ciImage = [[CIImage alloc] initWithImage:[UIImage imag...
  • zaijianbali
  • zaijianbali
  • 2015年07月09日 11:18
  • 1206
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS中滤镜的使用(二)滤镜组合
举报原因:
原因补充:

(最多只允许输入30个字)