如何创建图像边框?

How to create an image border?

我想用 ImageMagick 在图像周围创建类似边框的东西。我希望边框与图片的原始大小相关。

例如:

因此,对于 5% 的白色边框,我在反复试验后得到了这段代码。但这似乎太复杂了:

convert infile.png \
    null: \
    \( -clone 0 -resize 105% -fill \#fff -colorize 100% \) \
    -swap 0,2 -geometry +0+0 -gravity center -layers composite \
    outfile.png

我怎样才能简化这个?我错过了什么?

注意:我不想指定边框的静态宽度,因为我有多个不同尺寸的输入图像。

使用 ImageMagick,您可以将边框的大小指定为宽度和高度的百分比。 运行 在 500x400 图像上执行这样的命令以查看其工作原理...

convert input.png -border 5x10% result.png

这应该会生成尺寸为 550x480 的输出图像。请记住,您指定的百分比会添加到每个边缘,因此 5% 的边框将使 500 像素宽的图像变为 550 像素宽。

要将宽度和高度的总和增加 10%,您可以使用这样的命令...

convert input.png -border 5% result.png

您可以这样使用 -extent

convert -size 1000x100 xc:blue -gravity center -background red -extent 105%x105% result.png

检查

identify result.png
result.png PNG 1050x105 1050x105+0+0 8-bit sRGB 2c 350B 0.000u 0:00.000

使用您自己的任何图片代替 -size 1000x100 xc:blue