我想在 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
:
myimage-original.png
使用当前(无框架)内容创建- 添加框架
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
- 它复制
myimage-original.png
→myimage.png
- 添加框架
myimage.png
因此我只是myimage-original.png
通过脚本更新和添加框架。