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

Ruby Imagemagick-选择要替换像素颜色的区域,ruby,imagemagick,imagemagick-convert,Ruby,Imagemagick,Imagemagick Convert,我正在尝试使用imagemagick替换图像中某些像素的颜色,但不是仅在图像的一部分内替换整个图像中的颜色 我现在使用的命令是: convert original_image.jpg -fuzz 5% -fill '#f2f2f2' -opaque white image_without_colour.jpg convert original_image.jpg -fuzz 5% -fill '#f2f2f2' -area '100,100,50,50' -opaque white image

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

我现在使用的命令是:

convert original_image.jpg -fuzz 5% -fill '#f2f2f2' -opaque white image_without_colour.jpg
convert original_image.jpg -fuzz 5% -fill '#f2f2f2' -area '100,100,50,50' -opaque white image_without_colour.jpg
这是可行的,但它在任何地方取代了#f2f2,而不仅仅是在我想要的地方

我最理想的做法是:

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

我正在考虑一个更优雅的解决方案,但我认为这正是您想要的:

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
ImageMagick的“-region”选项相当于您建议的“-area”选项:


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

这或Glenn的答案解决了您的问题吗?如果是这样,请考虑接受其中一个答案(使用投票计数旁边的空心蜱/支票)。如果没有,请说出哪些不起作用,以便我或其他人能够进一步帮助您。非常感谢。