使用ImageMagick调整图像大小并设置背景颜色

6
我希望使用ImageMagick将一张100x200的图片调整为一张新的400x400的图片。
到目前为止,我有以下命令:
convert in.png -resize^ 400x400 -compose Copy -gravity center -extent 400x400 out.png

现在我想从in.png的左上角像素读取颜色,并将其设置为out.png的背景颜色。有人知道该怎么做吗?
3个回答

10

您可以通过以下方式获取左上角(坐标:0,0)像素的颜色:

convert in.png -colorspace rgb -format "%[pixel:p{0,0}]" info:

输出:

rgb(201,200,206)
如果您正在使用OSX/Linux/Unix系统,可以将其捕获到一个变量中,并像这样使用它来设置背景:
c=$(convert in.png -colorspace rgb -format "%[pixel:p{0,0}]" info:)
convert in.png -background "$c" ...

所以,如果我们从这张图片开始:

enter image description here

然后做这个:

c=$(convert in.png -colorspace rgb -format "%[pixel:p{0,0}]" info:)

echo $c           # Check that puppy's colour
rgb(255,0,0)      # Yep, it's red

convert -background "$c" in.png -resize 400x400 -gravity center -extent 400x400 out.png

我们将会得到以下结果:

输入图像描述

如果你不幸使用的是Windows操作系统,你需要进行一些难以理解的操作,需要从这里自行查找。


在Windows上,我肯定会推荐使用PowerShell来完成这个任务。 - Tim Sparkles

0

我使用这个方法来获取动画 GIF 的第一帧中左上角像素的背景颜色。

convert 'original.gif[0]' -colorspace rgb -crop 1x1+0+0 text:

0

使用-background选项设置背景颜色:

convert in.png -resize 400x400 -background black -compose Copy -gravity center -extent 400x400 out.png

你的解决方案没有查看左上角像素的背景颜色,而是将其设置为黑色。提问者明确要求使用左上角像素。 - jzarob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接