Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 将黑白像素转换为其他两种颜色的QC合成_Cocoa_Image_Filter_Composition_Quartz Composer - Fatal编程技术网

Cocoa 将黑白像素转换为其他两种颜色的QC合成

Cocoa 将黑白像素转换为其他两种颜色的QC合成,cocoa,image,filter,composition,quartz-composer,Cocoa,Image,Filter,Composition,Quartz Composer,我刚刚开始学习Quartz Composer,我想创建的第一件事是一个最终可以用于Cocoa应用程序的合成,它可以接受一个黑白图像和两个NSColor,并将黑色像素更改为NSColor#1,将白色像素更改为NSColor#2 我花了一些时间和QC打交道,但似乎不知道如何把所有的部分放在一起 我唯一知道的是,我需要使用图像过滤器模板,我确实看到有一个图像像素补丁可以从图像中获取像素…但是,我没有看到设置像素的补丁。这似乎也有可能需要Pixellate补丁…不过,我不必担心它会生成无限维的图像,因为

我刚刚开始学习Quartz Composer,我想创建的第一件事是一个最终可以用于Cocoa应用程序的合成,它可以接受一个黑白图像和两个NSColor,并将黑色像素更改为NSColor#1,将白色像素更改为NSColor#2

我花了一些时间和QC打交道,但似乎不知道如何把所有的部分放在一起


我唯一知道的是,我需要使用图像过滤器模板,我确实看到有一个图像像素补丁可以从图像中获取像素…但是,我没有看到设置像素的补丁。这似乎也有可能需要Pixellate补丁…不过,我不必担心它会生成无限维的图像,因为我的源图像将仅为固定大小的PNG图像。

看看
假彩色补丁-它会获取一幅图像并用一对颜色重新映射

事实上,由于
假彩色
修补程序只是核心图像过滤器的包装,具有相同的名称(
CIFalseColor
),因此您可以在根本不涉及Quartz Composer的情况下执行此操作—只需设置一个
CIFilter
实例并将其应用于NSImage即可

编辑或编写自己的核心图像过滤器,从以下内容开始:

kernel vec4 remapBasedOnRed(sampler image,__color colorForDark,__color colorForLight)
{
    return mix(colorForDark,colorForLight,sample(image, samplerCoord(image)).r);
}

…它获取输入图像的红色通道的亮度(
sample(image,samplerCoord(image)).r
),并将其用作
colorForDark
colorForLight
之间的线性插值系数。我将不得不更详细地研究CIFalseColor。然而,如果可能的话,我仍然有兴趣学习如何从头开始编写假彩色补丁。我想这可能是学习一些有趣技术的好方法。如果这是不可能的,那将是同样有趣的。+1为“写你自己的核心图像过滤器”的建议。你不可能构建一个QC构图,构图本身会变换每个像素。(嗯,这可能是可能的,但效率不高。)如果要变换图像,需要使用将图像作为输入并生成图像作为输出的修补程序。如果没有一个补丁可以满足您的需要,那么将其作为核心图像过滤器编写也不难。