imagemagick으로 공백을 삽입하는 방법?


15

"변환"(?)은이 입력에서이 출력을 얻는 데 필요한 매개 변수는 무엇입니까?

입력:

여기에 이미지 설명을 입력하십시오

산출:

여기에 이미지 설명을 입력하십시오

답변:


8

이미지가 오른쪽으로 플러시되는 것을 원하지 않기 때문에 다른 접근법 (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가되고 위치 오프셋입니다.


15

내 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...으로 바꾸십시오 .


8

설명서 : http://www.imagemagick.org/Usage/crop/#extent

convert in.png -gravity east -extent 500x352 out.png

감사!! 그러나 크기가 다르기 때문에 사진이 500x352가 아닌 경우 어떻게해야합니까?
gasko peter

1
나는 단지 당신에게 방법을 보여줍니다.
kev

@kev : 당신의 명령은 @gasko peter이 원하는 것을 정확하게하지 않습니다. 을 사용해야합니다 -extend 520x352. 그래도 '올바른 방향'+1 :-P
Kurt Pfeifle

나오지도의 # -extend # -extent # g '
커트 Pfeifle

-background transparent투명한 배경을 유지 하기 위해 추가 해야했습니다.
tremby

0

이 명령을 내에 정의했습니다 .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 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.