老实说,我真的不明白你的命令行中 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:
全白平面意味着'没有差异',任何红色像素都会暗示某种增量。
现在,如果 那个 的回答没有为我赢得投票,我不知道哪个会... :-)