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

Resize image with ImageMagick and set background color

我想用 ImageMagick 将一张 100x200 的图片调整为一张新的 400x400 图片。

到目前为止我有以下命令:

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

现在我想从 in.png 的顶部左侧像素读取颜色并将其设置为 out.png 的背景颜色。

有人知道怎么做吗?

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

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

你可以得到像素ar top-left角(坐标: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" ...

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

然后这样做:

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,你将不得不用 FOR /F 做一些难以理解的事情,你需要从 here 开始自己解决。

我用它从动画 gif 的第一帧获取左上角像素的背景颜色

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