zoukankan      html  css  js  c++  java
  • 美图秀秀滤镜之对比度

      对比度指的是一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量,即指一幅图像灰度反差的大小。

      在GPUImage中通过GPUImageContrastFilter来实现

      片段着色器

     varying highp vec2 textureCoordinate;
     
     uniform sampler2D inputImageTexture;
     uniform lowp float contrast;
     
     void main()
     {
         lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);
         
         gl_FragColor = vec4(((textureColor.rgb - vec3(0.5)) * contrast + vec3(0.5)), textureColor.w);
     }

    每个像素点的RGB值-0.5 乘以对比度值 然后+0.5生成新的像素点RGB

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

    效果

      

              对比度低                          对比度高

  • 相关阅读:
    《骆驼祥子》
    《基督山伯爵》
    JDeveloper 假死问题
    JSP代码执行顺序
    Ajax简单案例(实现提交值到服务器值不刷新页面)
    JS和JSP之间值传递
    如何更好的编码
    Telnet 便捷执行脚本
    MyBatis 缓存
    MyBatis 中传递多个参数的 4 种方式
  • 原文地址:https://www.cnblogs.com/salam/p/5119821.html
Copyright © 2011-2022 走看看