답변:
이미지가 오른쪽으로 플러시되는 것을 원하지 않기 때문에 다른 접근법 (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
이제 최종 520x352
값 을 얻으려면 원하는 71 픽셀을 추가해야 합니다. 그러나 당신은 당신의 두뇌에서 그 계산을 할 필요가 없습니다 :
구조에 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/Usage/crop/#extent
convert in.png -gravity east -extent 500x352 out.png
-extend 520x352
. 그래도 '올바른 방향'+1 :-P
-background transparent
투명한 배경을 유지 하기 위해 추가 해야했습니다.
이 명령을 내에 정의했습니다 .bash_profile
. 너비와 높이가 원하는 패딩에서 최종 이미지 크기를 자동으로 계산합니다 (0으로 작동).
# 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