首页 > 解决方案 > 打印图像与imagemagick不同的像素值?

问题描述

有没有一种简单的方法可以使用 imagemagick 打印两个图像不同的像素值?

为了清楚起见,我想知道那个像素的值是什么,以及它的坐标。从哪个图像中获取无关紧要,因为我可以简单地交换它们以获得正确的图像。

标签: imagemagick

解决方案


让我们制作两个图像,宽 3 像素,高 1 像素:

convert xc:red xc:lime xc:blue +append 1.png

在此处输入图像描述

convert 1.png -flop 2.png

在此处输入图像描述

如果我们执行以下操作,我们可以使两个图像中任何相同的像素变得透明:

convert {1,2}.png -compose changemask -composite mask.png     # Note that {1,2}.png is just bash shorthand for "1.png" "2.png"

在此处输入图像描述

如果我们重新排序输入图像:

convert {2,1}.png -compose changemask -composite mask.png     # Note that {2,1}.png is just bash shorthand for "2.png" "1.png"

在此处输入图像描述

因此,我假设您想要上述内容,但采用文本格式,透明像素被抑制:

convert {1,2}.png -compose changemask -composite txt: | grep -v ",0)"

输出

# ImageMagick pixel enumeration: 3,1,65535,srgba
0,0: (65535,0,0,65535)  #FF0000FF  red
2,0: (0,0,65535,65535)  #0000FFFF  blue

请注意,如果您想允许图像之间存在微小差异,您可以添加一些“模糊因子”。因此,如果您希望 rgb(0,100,200) 被认为足够接近等于 rgb(3,96,205),您可以-fuzz 5在命令的开头添加。


推荐阅读