在图像顶部添加边框而不用 imagemagick 调整大小

add border on top of image without resizing with imagemagick

这是一张 100x67 像素的乌龟图片:

如果我像这样为图像添加边框:

convert turtle.png -border 50x50 turtle-border.png

ImageMagick 在我的原始图像周围添加边框,将尺寸增加到 200x167 像素。

如何在不调整 dimeions 大小的情况下在乌龟图像的顶部绘制边框?是的,我知道乌龟的头和脚将不再可见。

要在图像中创建 "eating" 的边框,请使用 -shave to reduce the image, then -extent 将其恢复为原始大小。

convert turtle.png -background gray75 \
        -shave 10x10 \
        -extent 100x67-10-10 \
        turtle-border2.png

上一个回答

使用 -draw 操作在图像上放置一个矩形。

convert turtle.png -fill gray75 \
        -draw 'rectangle 0 0 100 33' \
        turtle-border.png

另一种方法可能是像这样使用 -fx 运算符:

convert turtle.png -fx "i<10||i>(w-10)||j<10||j>(h-10)?0:p" out.png

也就是说... 如果我们距图像左侧不到 10 个像素,或者距右侧小于 10 个像素,或者距顶部小于 10 个像素,或者距顶部小于 10 个像素底部,输出 0(黑色),否则输出原始的、未改变的像素颜色 (p)。

将 0 更改为 0.75 以获得灰色而不是黑色。

另一种方法 - 只是稍微简化了@emcconville 的回答:

convert turtle.png -shave 10x10 -bordercolor red -border 10 result.png