Imagemagickを使用して境界線を追加する方法

Imagemagickを使用して境界線を追加する方法

Imagemagick で写真に追加したい内容:

  • 白い枠線
  • 幅2インチ

どうすればいいですか?

答え1

convert -bordercolor white -border 20 input.jpg output.jpg

画像に 20 ピクセルの白い枠線を追加します。必要なのは、画像の 1 インチ (dpi) が何ピクセルであるかを調べることだけです。

さらなる例は以下を参照ここ

私のテスト画像の場合、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 インチは 192 ピクセルになります。

答え2

まず、2 インチの境界線のピクセル数を調べます。これらのピクセルを元の画像のピクセル数に追加します (両側に同じ境界線が必要なため、2 回追加します)。

次のように変換します

convert <input> -size <newsize> xc:white +swap -gravity center -composite <output>

たとえば、画像サイズが3600x2400で、解像度が100px/インチだとします。したがって、各寸法に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.pngmyimage.png
  2. フレームを追加myimage.png

myimage-original.pngしたがって、スクリプトを使用してフレームを更新および追加するだけです。

関連情報