Answers:
由于我不希望图像与右侧齐平,因此我不得不使用另一种方法(ImageMagick的composite
工具):
convert -size 500x500 xc:white canvas.png
convert canvas.png in.png -geometry +200+200 -composite out.png
-size
应该是所需的最终图像大小,canvas.png
是空白的白色画布,in.png
将是您要填充的图像,并且-geometry
是定位偏移量。
我的ImageMagick版本是'6.7.8-0 2012-07-04 Q16'。根据文档,@kev命令的答案应该起作用:
convert in.png -gravity east -extent 520x352 out.png
但是,就像大多数ImageMagick问题一样,您可以使用不同的方法来实现相同的目标。您可以这样使用montage
:
montage null: in.png -tile 2x1 -geometry +17+0 out1.png
这使用特殊的“ null:”图像将其与串联in.png
。
的确,convert
您需要-extent
为每个具有不同大小的输入图片重新计算传递给它们的值。
首先用于identify -format
获取图像的尺寸:
identify -format '%Wx%H' in.png
这应该返回类似:
449x352
好的,现在您需要添加所需的71像素,以获得最终520x352
值。但是您不需要自己动脑筋进行计算:
ImageMagick可以解救!,它的魔术计算功能... :-)
您可以告诉identify -format
命令为您执行该计算:
identify -format '%[fx:W+71]x%H'
现在,您应该得到以下结果:
520x352
因此,假设您只想在任何图片的左侧填充/添加宽度为71像素的“白色条纹”,则可以使用以下单个命令行:
convert \
in.png \
-gravity east \
-background white \
-extent $(identify -format '%[fx:W+71]x%H' in.png) \
out2.png
瞧!一个命令行(说实话,它封装了2个命令),您可以在目录中的所有PNG,JPEG,GIF ...上松开该命令,以自动为每个像素添加71像素的白色条带:
for i in *.png *.jpeg *jpg *.gif; do
convert \
${i} \
-gravity east \
-background white \
-extent $(identify -format '%[fx:W+71]x%H' ${i}) \
$(convert ${i} -format "71-pixels-padded-left---%t.%e" info:)
done
对于每个图像,其输出保持相同的文件类型。当然,您可以将所有输出强制为PNG(或任何您想要的格式)。只需将%t.%e
命令的一部分替换为%t.png
...
说明文件:http : //www.imagemagick.org/用法/ crop /#extent
convert in.png -gravity east -extent 500x352 out.png
-extend 520x352
。+1代表“正确方向” :-P
-background transparent
以保留透明背景。
我在中定义了此命令.bash_profile
。它将根据您想要的宽度和高度的填充自动计算出最终的图像大小(适用于零):
# arithmetic with awk
calc() { awk "BEGIN { print $* }"; }
# pad an image
img_pad() {
local width height pw ph
[ $# -lt 3 ] && { echo "Usage: img_pad <Input> <WxH> <Output>"; return; }
# parse current size and padding
IFS=x read width height <<< "$(identify "$1" | awk '{print $3}')"
IFS=x read pw ph <<< "$2"
# new widht and height
width=$(calc "$width + 2*$pw")
height=$(calc "$height + 2*$ph")
echo "Converting '$1' to '$3' with size ${width}x${height} (+w=${pw}, +h=${ph})."
convert "$1" -gravity center -extent "${width}x${height}" "$3"
}
用法示例:
# pad 50px left and right, no vertical padding
img_pad in.png 50x0 out.png