zoukankan      html  css  js  c++  java
  • 美图秀秀滤镜之饱和度

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

      在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];
    }

      效果

       

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

  • 相关阅读:
    素数路径Prime Path POJ3126 素数,BFS
    Fliptile POJ3279 DFS
    Find the Multiple POJ1426
    洗牌Shuffle'm Up POJ3087 模拟
    棋盘问题 POJ1321 DFS
    抓住那只牛!Catch That Cow POJ3278 BFS
    Dungeon Master POJ2251 三维BFS
    Splitting into digits CodeForce#1104A
    Ubuntu下手动安装Nvidia显卡驱动
    最大连续子序列和
  • 原文地址:https://www.cnblogs.com/salam/p/5119961.html
Copyright © 2011-2022 走看看