ImageMagickで空白を挿入する方法は?


15

このINPUTからこのOUTPUTを取得するには、どのパラメーターが「変換」(?)する必要がありますか?

入力:

ここに画像の説明を入力してください

出力:

ここに画像の説明を入力してください

回答:


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

出来上がり!1つのコマンドライン(正直に言うと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ではない場合-サイズが異なるためどうなりますか?
ガスコピーター

1
方法をお見せします。
ケブ

@kev:あなたのコマンドは、@ gasko peterが望んだことを正確には行いません。を使用する必要があります-extend 520x352。:-Pしかし「正しい方向」の1
クルトPfeifle

sedのの#-extend#-extent#G '
クルトPfeifle

-background transparent透明な背景を保持するために追加する必要がありました。
震災

0

このコマンドはで定義されてい.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 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.