zoukankan      html  css  js  c++  java
  • GPUImage滤镜之自然饱和度

      自然饱和度”是图像整体的明亮程度,“饱和度”是图像颜色的鲜艳程度。 

      “饱和度”与“色相/饱和度”命令中的“饱和度”选项效果相同,可以增加整个画面的“饱和度”,但如调节到较高数值,图像会产生色彩过饱和从而引起图像失真。 

      在GPUImage中使用GPUImageVibranceFilter来实现调整图像的自然饱和度

      片段着色

        varying highp vec2 textureCoordinate;
     
        uniform sampler2D inputImageTexture;
        uniform lowp float vibrance;
     
        void main() {
            lowp vec4 color = texture2D(inputImageTexture, textureCoordinate);
            lowp float average = (color.r + color.g + color.b) / 3.0;
            lowp float mx = max(color.r, max(color.g, color.b));
            lowp float amt = (mx - average) * (-vibrance * 3.0);
            color.rgb = mix(color.rgb, vec3(mx), amt);
            gl_FragColor = color;
        }

      具体应用

      

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

      效果

      

      

     

  • 相关阅读:
    Redis为什么要自己实现一个SDS
    Redis中的数据结构
    编程题
    设计模式-代理模式
    设计模式-原型模式
    设计模式-工厂模式(简单工厂,工厂方法,抽象工厂)
    Redis基础
    Windows提高_1.4进程通信
    Windows提高_1.3文件操作
    Windows提高_1.2遍历进程、遍历模块
  • 原文地址:https://www.cnblogs.com/salam/p/5120025.html
Copyright © 2011-2022 走看看