你的位置:首页 > 操作系统

[操作系统]美图秀秀滤镜之饱和度


  饱和度是指色彩的鲜艳程度,也称色彩的纯度。饱和度取决于该色中含色成分和消色成分(灰色)的比例。含色成分越大,饱和度越大;消色成分越大,饱和度越小。纯的颜色都是高度饱和的,如鲜红,鲜绿。混杂上白色,灰色或其他色调的颜色,是不饱和的颜色,如绛紫,粉红,黄褐等。完全不饱和的颜色根本没有色调,如黑白之间的各种灰色。

  在GPUImage中使用GPUImageSaturationFilter类来实现调整图像的饱和度

  片段着色

 varying highp vec2 textureCoordinate; uniform sampler2D inputImageTexture; uniform lowp float saturation; // Values from "Graphics Shaders: Theory and Practice" by Bailey and Cunningham const mediump vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); void main() {  lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);  lowp float luminance = dot(textureColor.rgb, luminanceWeighting);  lowp vec3 greyScaleColor = vec3(luminance);    gl_FragColor = vec4(mix(greyScaleColor, textureColor.rgb, saturation), textureColor.w);   }

 

   具体应用

 

+ (UIImage *)changeValueForSaturationFilter:(float)value image:(UIImage *)image;{  GPUImageSaturationFilter *filter = [[GPUImageSaturationFilter alloc] init];  filter.saturation = value;  [filter forceProcessingAtSize:image.size];  GPUImagePicture *pic = [[GPUImagePicture alloc] initWithImage:image];  [pic addTarget:filter];    [pic processImage];  [filter useNextFrameForImageCapture];  return [filter imageFromCurrentFramebuffer];}

 

 

  效果

   

            高饱和度                          低饱和度【黑白】