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

    效果

      

              对比度低                          对比度高

  • 相关阅读:
    数据结构之c++感悟
    常见linux系统中RPM包的通用命名规则
    scripts
    http
    iscsi
    RHCE认证经典考题
    数据库
    配置空客户端邮件
    配置nfs服务
    Python版本的7大排序
  • 原文地址:https://www.cnblogs.com/salam/p/5119821.html
Copyright © 2011-2022 走看看