Imagemagick - 选择要替换像素颜色的区域

时间:2014-07-08 12:14:38

标签: ruby imagemagick imagemagick-convert

我正在尝试使用imagemagick替换图像中某些像素的颜色,但不是仅在图像的一部分内的整个图像中。

我现在使用的命令是:

convert original_image.jpg -fuzz 5% -fill '#f2f2f2' -opaque white image_without_colour.jpg

这有效,但它取代了#f2f2f2无处不在,而不仅仅是我想要的地方。

理想情况下我应该这样做:

convert original_image.jpg -fuzz 5% -fill '#f2f2f2' -area '100,100,50,50' -opaque white image_without_colour.jpg

2 个答案:

答案 0 :(得分:1)

我正在考虑一个更优雅的解决方案,但我认为这可以满足您的需求:

convert x.jpg -crop 100x100+50+50 y.jpg                     # Extract region to work on into y.jpg
convert y.jpg -fuzz 5% -fill '#f2f2f2' -opaque white z.jpg  # Do your stuff and save as z.jpg
convert x.jpg z.jpg -geometry +50+50 -composite out.jpg     # Whack it back whence it came!

输出文件为out.jpg

我认为这是一个更优雅的解决方案:

convert x.png \( +clone -crop 100x100+50+50 -fuzz 5% -fill '#f2f2f2' -opaque white \) -flatten out.jpg

答案 1 :(得分:1)

ImageMagick" -region"选项相当于您建议的" -area"选项:

convert original_image.jpg -fuzz 5% -fill '#f2f2f2' -region 100x100+50+50 \
        -opaque white image_without_colour.jpg

将指定区域中的白色像素更改为灰色。