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 유형이므로 96x96dpi를 갖습니다.

이 경우 내 이미지의 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.png→ 복사합니다myimage.png
  2. 프레임 추가myimage.png

따라서 myimage-original.png스크립트를 통해 프레임을 업데이트하고 추가하기만 하면 됩니다.

관련 정보