對比度指的是一幅圖像中明暗區域最亮的白和最暗的黑之間不同亮度層級的測量,即指一幅圖像灰度反差的大小。 在GPUImage中通過GPUImageContrastFilter來實現 片段著色器 varying highp vec2 textureCoordinate; uniform samp...
對比度指的是一幅圖像中明暗區域最亮的白和最暗的黑之間不同亮度層級的測量,即指一幅圖像灰度反差的大小。
在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]; }
效果
對比度低 對比度高