Ios 乌贼墨、RGB、灰度效应在UIImage中的应用

Ios 乌贼墨、RGB、灰度效应在UIImage中的应用,ios,opengl-es,uiimage,Ios,Opengl Es,Uiimage,我想对应用程序中的图像应用过滤效果。 我是OpenGL新手,希望在我的应用程序中对图像应用暗褐色、RGB和灰度效果。 我已经实现了亮度、对比度、饱和度效果,但无法找到任何关于灰度、RGB和深褐色效果的解决方案 提前感谢。您没有指定是在OpenGL ES 1.1还是2.0中执行此操作,因此我假设您指的是较新的2.0。如果1.1确实是你的目标,你就需要像苹果在他们的游戏中那样使用混合模式 对于OpenGL ES 2.0,可以使用片段着色器来实现这些效果。对于灰度版本的图像,可以使用以下片段着色器仅提

我想对应用程序中的图像应用过滤效果。 我是OpenGL新手,希望在我的应用程序中对图像应用暗褐色、RGB和灰度效果。 我已经实现了亮度、对比度、饱和度效果,但无法找到任何关于灰度、RGB和深褐色效果的解决方案


提前感谢。

您没有指定是在OpenGL ES 1.1还是2.0中执行此操作,因此我假设您指的是较新的2.0。如果1.1确实是你的目标,你就需要像苹果在他们的游戏中那样使用混合模式

对于OpenGL ES 2.0,可以使用片段着色器来实现这些效果。对于灰度版本的图像,可以使用以下片段着色器仅提取亮度:

 precision highp float;

 varying vec2 textureCoordinate;

 uniform sampler2D inputImageTexture;

 const highp vec3 W = vec3(0.2125, 0.7154, 0.0721);

 void main()
 {
     float luminance = dot(texture2D(inputImageTexture, textureCoordinate).rgb, W);

     gl_FragColor = vec4(vec3(luminance), 1.0);
 }
对于深褐色色调,可以使用我在中演示的颜色矩阵操纵着色器:

有一个矩阵

self.colorMatrix = (GPUMatrix4x4){
        {0.3588, 0.7044, 0.1368, 0},
        {0.2990, 0.5870, 0.1140, 0},
        {0.2392, 0.4696, 0.0912 ,0},
        {0,0,0,0},
    };
我不知道你所说的“RGB效果”是什么意思。也许你指的是颜色矩阵操作,在这种情况下,上述方法也适用于你


所有这些都是我的开源框架中的内置过滤器(请参阅GPUImageBrightnessFilter、GPUImageContrastFilter、GPUImageSaturationFilter、GPUImageSepiaFilter和GPUImageColorMatrixFilter)。如果您真的是OpenGL ES的新手,那么设置场景、将UIImage作为纹理拉入、对其运行顶点和片段着色器、检索该图像并将其保存为UIImage需要大量代码。GPUImage只需几行Objective-C代码即可为您完成所有这些工作。

看看@niks您能提供亮度、对比度和饱和度代码吗
self.colorMatrix = (GPUMatrix4x4){
        {0.3588, 0.7044, 0.1368, 0},
        {0.2990, 0.5870, 0.1140, 0},
        {0.2392, 0.4696, 0.0912 ,0},
        {0,0,0,0},
    };