坦白地说,我不太理解你的命令行中数值为
25700
的价值。然而,我向您建议使用更强大的
-fx
运算符的不同命令行。这看起来有点复杂,但希望更易于理解... 但首先,我看到您的描述,想要从每个当前的R、G和B颜色值中减去一个固定的数值
120
。因此,这是一个灰像素颜色...正如您在ImageMagick的内置颜色列表中可以查找到的那样,它的名称是
gray47
:
convert -list color | grep '(120,120,120)'
gray47 srgb(120,120,120) X11 XPM
grey47 srgb(120,120,120) SVG X11
这使我想到了以下命令:
convert \
input.jpg \
-channel red -fx 'r - gray47' \
-channel green -fx 'g - gray47' \
-channel blue -fx 'b - gray47' \
output.jpg
这种编写命令的方式可能会让您了解到一些容易推导出的修改,以备将来需要使用...
要立即预览结果弹出窗口(而不是将其写入文件),您还可以使用
-show:
作为输出,就像这样:
convert \
input.jpg \
-channel red -fx 'r - gray47' \
-channel green -fx 'g - gray47' \
-channel blue -fx 'b - gray47' \
-show:
更新
如果您想检查每个像素的真实差异,您可以让ImageMagick打印出每个像素的颜色值:
convert input.jpg input.txt
convert output.jpg output.txt
.txt文件的格式相当容易理解,一旦你知道第一列给出像素从零开始的坐标:123,456:
意味着:第124列(!),第457行。
现在,即使是在自动化、脚本版本中,你也可以尽情比较这两个.txt文件,而不需要求助于Gimp。 :-)
甚至可以使用input.txt
,并对每个像素值应用Perl、Ruby、Python或Shellscript,将其从每个通道分别减去120
,将其保存为output2.txt,然后将其转换回JPEG:
convert output2.txt output2.jpg
然后查找两个输出图像之间的像素差异:
compare output.jpg output2.jpg delta.jpg
compare output.jpg output2.jpg view:
一架全白的飞机意味着“没有差异”,任何红色像素都会暗示某种变化。现在,如果这个答案不能为我赢得一张赞,那么我不知道什么能赢得了… :-)