8

オーバーレイされた画像間の間隔/パディングが一貫しているように、背景画像の上にImageMagickで複数の画像をつなぎ合わせる最も効率的な方法を探していますか?

+append、convert -composite、convert with -page および -layers merge の使用を調査しました。

次のコマンド (convert -composite) は機能しますが、絶対オフセットを指定するために画像の寸法を事前に計算する必要があります。本当に、最初のレイヤー画像の終わりと2番目のレイヤー画像の始まりの間に10ピクセルのギャップが必要ですが、それを達成する唯一の方法は、キャンバスの左上隅からの絶対オフセットを指定することです.

convert \
  background.jpg \
  first.jpg -gravity Northwest -geometry  +10+10 -composite \
  second.jpg                   -geometry +300+10 -composite \
  third.jpg                    -geometry +590+10 -composite \
  output.jpg

レイヤーの「最後の」画像に対して水平オフセットを解釈できるように、ある種の演算子を探しているので+300+10、2番目の画像と3番目の画像を指定する代わりに、オフセット+590+10を指定できます。+10+10

CSS ポジショニングで機能-gravity Northwestするのと同じ方法で、重力によってそれを達成できると思っていましたが、そうではありません。float: left;

私はまた、次のことでいくつかの成功を収めました:

convert \
  -page  +10+10 first.jpg  \
  -page +300+10 second.jpg \
  -page +590+10 third.jpg  \
  -background transparent  \
  -layers merge \
   layered.png

convert background.jpg layered.png -gravity Center -composite output.jpg

説明されている両方の手法では、絶対オフセットを事前に計算する必要がありますが、これは少し面倒です。これを行うより良い方法はありますか?

4

2 に答える 2

8

コマンドを見落としていmontageます。

必要な間隔を追加する最も簡単なコマンドは、で-frame 5オプションを設定すること-mattecolor noneです。これは、幅の値が異なる画像で機能し、10 ピクセルの距離ですべての画像を離します。

montage             \
  -alpha on         \
  -background none  \
  -mode concatenate \
  -tile x1          \
  -frame 5          \
  -mattecolor none  \
   *.jpg            \
   output1.png

ただし、結果として得られる画像の境界線は、上下左右でわずか 5 ピクセルの幅しかないことに簡単に気付くでしょう。これらの 5 つのピクセルをすべて削除するには、次のようにします。

convert  output1.png  -shave 5  output2.png

この結果を にオーバーレイするにbackground.jpgは、次を使用します。

convert             \
  background.jpg    \
  output2.png       \
 -gravity Northwest \
 -geometry +10+10   \
 -composite         \
  final.jpg
于 2012-09-05T03:28:10.780 に答える
2

また、Kurt の透過フレーム トリックを追加で使用することもできます。モンタージュの代わりに追加を使用すると、重力設定を使用して画像を上 (北) 下 (南) または中央に配置できるという利点があります。

以下は、画像を 10 ピクセル間隔で水平方向に追加し、画像を上揃えにする方法の例です。

convert \
  -frame 5 \
  -mattecolor none \
  -background none \
  -gravity north \
  first.jpg second.jpg third.jpg \
  +append \
  png:- | convert - -shave 5
  output.png

画像を垂直方向に追加するには、+append の代わりに -append を使用します。パイプを使用しました | 同じコマンドで外側のフレームを削ります。

于 2014-02-24T21:52:02.523 に答える