如何使用 Imagemagick 添加边框

如何使用 Imagemagick 添加边框

我想在 Imagemagick 中添加我的图片:

  • 白色边框
  • 2英寸宽

我该怎么做?

答案1

convert -bordercolor white -border 20 input.jpg output.jpg

会为图像添加一个 20 像素大小的白色边框。您只需要找出图像的 1 英寸 (dpi) 等于多少 px。

更多示例这里

在我的测试图像中,它保存了 dpi 信息。我可以使用它来获取它identivy -verbose,它看起来像这样:

$ identify -verbose tiger.jpg
Image: tiger.jpg
  Format: JPEG (Joint Photographic Experts Group JFIF format)
  Mime type: image/jpeg
  Class: DirectClass
  Geometry: 600x400+0+0
  Resolution: 96x96
  Print size: 6.25x4.16667
  Units: PixelsPerInch
  Type: TrueColor
...

如您所见,它的单位类型为 PixelsPerInch,因此分辨率为 96x96 dpi。

在这种情况下,我的图像上的 2 英寸是 192px。

答案2

首先,找出 2 英寸边框有多少个像素。将这些像素添加到原始图像的 #pixels 中(两次,因为您希望每边的边框相同)。

现在使用类似

convert <input> -size <newsize> xc:white +swap -gravity center -composite <output>

假设图像尺寸为 3600x2400,分辨率为 100px/in。因此,您必须在每个尺寸上添加 400px,结果为 4000x2800。(如何找出这些值已由 @V-master 描述)。然后命令读取(其中输入.jpg是原创的输出.jpg是结果)

convert input.jpg -size 4000x2800 xc:white +swap -gravity center -composite output.jpg

对我来说,这按要求完成了。

编辑:

convert input.jpg -bordercolor white -border <n> output.jpg

(正如@V.master 所建议的那样)同样有效,只需-bordercolor在之前定义选项即可-border。这是我的建议的快捷方式,我使用它来获得不同大小的边框(即固定纵横比,独立于原始图像的纵横比)。

没有选项可以将单位设置为英寸。2 英寸是多少取决于打印图片时的输出分辨率(例如 300dpi:n=600,600dpi:n=1200 等)。

对于那些想知道的人来说:xc非选项代表X窗口颜色,并设置帆布颜色。在 ImageMagick 的新版本中,canvas已添加别名以便于理解。

答案3

在编写文档时,我必须更新图像并再次添加框架。

下面的脚本可以轻松添加框架:

#!/bin/bash -e
if [ -z "$1" ]; then
    echo "Usage: $0 file"
    exit 1
fi

file="$1"
if [[ "$file" == *"-original"* ]]; then
    original=$file
    file=${file//-original/}
else
    extension=${file##*.}
    original="${file%.$extension}-original.$extension"
fi

if [ ! -e "$original" ]; then
    mv "$file" "$original"
fi

convert -bordercolor white -border 2 "$original" "$file"

例如,我们有一个myimage.png没有框架的文件。以下命令:

$ ./add_frame.sh myimage.png

对于文件myimage.png

  1. myimage-original.png使用当前(无框架)内容创建
  2. 添加框架myimage.png

对于接下来的运行:

$ ./add_frame.sh myimage.png # you may use current name

$ ./add_frame.sh myimage-original.png # or with original suffix, result is the same
  1. 它复制myimage-original.pngmyimage.png
  2. 添加框架myimage.png

因此我只是myimage-original.png通过脚本更新和添加框架。

相关内容