Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Imagemagick:RGB如何使用此软件?_Imagemagick - Fatal编程技术网

Imagemagick:RGB如何使用此软件?

Imagemagick:RGB如何使用此软件?,imagemagick,Imagemagick,理想情况下,我想将图像中的所有颜色#FF00FF更改为#0000FF,同时保持阴影。所以我想我至少应该让它先改变颜色,看看这个软件是否能够做这样的事情 然而,它只是改变了一点颜色为白色,只有一个高绒毛。所以很明显,Imagemagick中的RGB不像其他地方那样工作,我也找不到任何东西来解释它是如何工作的 它似乎用纯白代替了一些灰白色 使用PHP,我会: exec("convert ".$dir."".$file." -channel RGB -fuzz 30% -opaque rgb\(255

理想情况下,我想将图像中的所有颜色#FF00FF更改为#0000FF,同时保持阴影。所以我想我至少应该让它先改变颜色,看看这个软件是否能够做这样的事情

然而,它只是改变了一点颜色为白色,只有一个高绒毛。所以很明显,Imagemagick中的RGB不像其他地方那样工作,我也找不到任何东西来解释它是如何工作的

它似乎用纯白代替了一些灰白色

使用PHP,我会:

exec("convert ".$dir."".$file." -channel RGB -fuzz 30% -opaque rgb\(255,0,255\) -fill rgb\(0,0,255\) ".$dir."".$file);  

我不是100%确定你的意思,因为你还没有提供其他软件的示例,但我会尝试一下,看看我们是否能达到目的

因此,如果我们制作一张起始图像,包括左侧假定的品红色调和右侧的一些测试颜色:

convert -size 256x256 gradient:black-magenta -size 50x256 \
   xc:black xc:white xc:red xc:lime xc:blue +append start.png

而且,你想把洋红的色调改成蓝色。我会称之为色调调制,所以我想找出蓝色和品红之间的色调角度,所以我会创建一个2x1图像,其中有一个品红和一个蓝色像素,并得到它们的HSI值:

convert xc:magenta xc:blue -append -colorspace hsi txt:
输出

# ImageMagick pixel enumeration: 1,2,65535,hsi
0,0: (54612.5,65535,43690)  #D555FFFFAAAA  hsi(300,100%,66.6667%)
0,1: (43690,65535,21845)  #AAAAFFFF5555  hsi(240,100%,33.3333%)
我可以看到它们的色调相距60度(300-240度)。因此,我将使用
-modulate
操作符,它接受亮度、饱和度和色调,将前两个保持100%不变,并将色调修改60度:

convert start.png -modulate 100,100,60 result.png


或者你不是这个意思?也许你只是想影响特定的颜色。如果是这样的话,那就更难了。。。但没那么难:——)

首先,提取色调、饱和度和亮度层以分离文件:

convert start.png -colorspace HSL -separate -colorspace gray HSL-%d.png
这将为我们提供
HSL-0.png
中单通道灰度图像的色调,
HSL-1.png
中的饱和度以及
HSL-2.png
中的亮度

现在,我们想为色调通道创建一个新的LUT(查找表),因此我们创建一个360像素长的LUT,它以1:1的比例映射,即所有内容都映射到法线

convert -size 1x360 gradient: -rotate 90 greyscale.png

然后,我们要丁克和周围的品红(300)查找,使他们蓝色(240)。因此,我们希望从280-320范围内的所有像素中减去60度(如果在0-1范围内缩放0-360度,则为0.16),因此存在一些公差:

convert -size 1x360 gradient: -rotate 90 -colorspace gray -fx "i<280||i>320?u:u-0.16" hueCLUT.png

因此,作为一个更简单的脚本,它可能会变成:

#!/bin/bash

# Make a hue CLUT, transforming magenta hues to blue
convert -size 1x360 gradient: -rotate 90 -colorspace gray -fx "i<295||i>305?u:u-0.16" -resize 256x1! hueclut.png

# Apply to the hue channel
convert start.png -colorspace HSL -write MPR:HSL \
        -channel R -separate hueclut.png -clut   \
        \( MPR:HSL -channel G -separate \)       \
        \( MPR:HSL -channel B -separate \)       \
        -set colorspace HSL -combine -colorspace RGB result.png
#/bin/bash
#使色调混合,将洋红色调转换为蓝色
转换-尺寸1x360渐变:-旋转90-颜色空间灰色-fx“i305?u:u-0.16”-调整大小256x1!hueclut.png
#应用于色调通道
convert start.png-colorspace HSL-write MPR:HSL\
-通道R-单独的hueclut.png-clut\
\(MPR:HSL-通道G-单独\)\
\(MPR:HSL-通道B-单独\)\
-设置colorspace HSL-combine-colorspace RGB result.png

我不能100%确定您的意思,因为您没有提供其他软件的功能示例,但我会尝试一下,看看我们是否能达到目的

因此,如果我们制作一张起始图像,包括左侧假定的品红色调和右侧的一些测试颜色:

convert -size 256x256 gradient:black-magenta -size 50x256 \
   xc:black xc:white xc:red xc:lime xc:blue +append start.png

而且,你想把洋红的色调改成蓝色。我会称之为色调调制,所以我想找出蓝色和品红之间的色调角度,所以我会创建一个2x1图像,其中有一个品红和一个蓝色像素,并得到它们的HSI值:

convert xc:magenta xc:blue -append -colorspace hsi txt:
输出

# ImageMagick pixel enumeration: 1,2,65535,hsi
0,0: (54612.5,65535,43690)  #D555FFFFAAAA  hsi(300,100%,66.6667%)
0,1: (43690,65535,21845)  #AAAAFFFF5555  hsi(240,100%,33.3333%)
我可以看到它们的色调相距60度(300-240度)。因此,我将使用
-modulate
操作符,它接受亮度、饱和度和色调,将前两个保持100%不变,并将色调修改60度:

convert start.png -modulate 100,100,60 result.png


或者你不是这个意思?也许你只是想影响特定的颜色。如果是这样的话,那就更难了。。。但没那么难:——)

首先,提取色调、饱和度和亮度层以分离文件:

convert start.png -colorspace HSL -separate -colorspace gray HSL-%d.png
这将为我们提供
HSL-0.png
中单通道灰度图像的色调,
HSL-1.png
中的饱和度以及
HSL-2.png
中的亮度

现在,我们想为色调通道创建一个新的LUT(查找表),因此我们创建一个360像素长的LUT,它以1:1的比例映射,即所有内容都映射到法线

convert -size 1x360 gradient: -rotate 90 greyscale.png

然后,我们要丁克和周围的品红(300)查找,使他们蓝色(240)。因此,我们希望从280-320范围内的所有像素中减去60度(如果在0-1范围内缩放0-360度,则为0.16),因此存在一些公差:

convert -size 1x360 gradient: -rotate 90 -colorspace gray -fx "i<280||i>320?u:u-0.16" hueCLUT.png

因此,作为一个更简单的脚本,它可能会变成:

#!/bin/bash

# Make a hue CLUT, transforming magenta hues to blue
convert -size 1x360 gradient: -rotate 90 -colorspace gray -fx "i<295||i>305?u:u-0.16" -resize 256x1! hueclut.png

# Apply to the hue channel
convert start.png -colorspace HSL -write MPR:HSL \
        -channel R -separate hueclut.png -clut   \
        \( MPR:HSL -channel G -separate \)       \
        \( MPR:HSL -channel B -separate \)       \
        -set colorspace HSL -combine -colorspace RGB result.png
#/bin/bash
#使色调混合,将洋红色调转换为蓝色
转换-尺寸1x360渐变:-旋转90-颜色空间灰色-fx“i305?u:u-0.16”-调整大小256x1!hueclut.png
#应用于色调通道
convert start.png-colorspace HSL-write MPR:HSL\
-通道R-单独的hueclut.png-clut\
\(MPR:HSL-通道G-单独\)\
\(MPR:HSL-通道B-单独\)\
-设置colorspace HSL-combine-colorspace RGB result.png

以目前的形式来看,这似乎非常不清楚。你不想只改变那些颜色,但也要改变相似的颜色,对吗?你能举个例子说明你想要什么,以及IM是如何不做你想要的事情的吗?我不知道为什么在发布关于修改图像的信息时我没有想到发布图像,但是答案是完整的,谢谢你的建议;)以目前的形式来看,这似乎非常不清楚。你不想只改变那些颜色,但也要改变相似的颜色,对吗?你能举个例子说明你想要什么,以及IM是如何不做你想要的事情的吗?我不知道为什么在发布关于修改图像的信息时我没有想到发布图像,但是答案是完整的,谢谢你的建议;)“simpler脚本”的复制和粘贴不起作用,但是,我按照您发布的上述命令编写了一个脚本,它只起作用。灰色也会变得有点暗,但这在使用色调时并不意外。我很高兴我们最终达到了这一点,它适合你。也许可以尝试将最终RGB更改为sRGB,看看这是否有帮助。祝你的公关好运