私はJPEGを持っています:
PNGを挿入したい:
JPEGの128x128の位置。
するとき
vips insert tile.jpg pin.png newimage.jpg 128 128
pin.jpgにはアルファチャネルがあり、tile.jpgにはないので、 Error Output: insert: images must have the same number of bands, or one must be single-band
得られます。
だから私はjpgをpngに変換します:
convert tile.jpg png32:tile.png
これで、AlphaChannelを使用したtile.pngができました。
しかし、私が今電話するとき:
vips insert tile.png pin.png newimage.png 128 128
私は次のようになります:
挿入されたpin.pngの背景は白です。
vips insert --help-all
を確認しましたが、役立つコマンドラインパラメーターが見つかりませんでした。 どちらの画像にもアルファチャンネルがあります。 私の質問:
insert
コマンドは透明な背景をサポートしていますか?LG
codecitizen
こんにちは@codecitizen 、
insert
は非常に低レベルの操作です。つまり、ある画像を別の画像の上に配置するだけで、ブレンドは行いません。
現在のlibvipsでは、 blend
オプションとともにifthenelse
を使用する必要があります。 それはかなり恐ろしいです:
# get the alpha channel from the overlay
vips extract_band marker.png alpha.png 3 --n 1
# get RGB from the overlay
vips extract_band marker.png rgb.png 0 --n 3
# find the size of the overlay
width=$(vipsheader -f width marker.png)
height=$(vipsheader -f height marker.png)
# cut out an area the size of marker from the background
vips extract_area background.jpg bg.png 128 128 $width $height
# blend the marker on top of the chunk of background
vips ifthenelse alpha.png rgb.png bg.png blended.png --blend
# insert the blended image back into the background
vips insert background.jpg blended.png final.jpg 128 128
これを生成するには:
libvips 8.6には、通常のすべてのブレンディングモードを実行できる新しいcomposite
演算子があります。 できるよ:
vips composite "background.jpg marker.png" final.jpg 2
2
は、 over
ブレンドモードを意味します。 すべてのPDFブレンドモードをサポートします。 それは一週間かそこらで出るはずです。
@jcupittねえ、ありがとう。 libvips 8.6をインストールしましたが、 vips composite
はうまく機能しました。 可能であれば、2番目の画像の場所を指定する方法がわかりません。
オーバーレイを拡大して大きな画像に一致させてから、次のように構成できます。
width=$(vipsheader -f width background.jpg)
height=$(vipsheader -f height background.jpg)
vips embed marker.png overlay.png 128 128 $width $height
vips composite "background.jpg overlay.png" final.jpg 2
または、背景の一部を切り取り、作成してから挿入し直します(上記のように)。
これは一般的なことのように思われます。おそらく、位置を指定するオプションがあるはずです。
驚くばかり! 迅速なサポートをありがとうございました!
最も参考になるコメント
オーバーレイを拡大して大きな画像に一致させてから、次のように構成できます。
または、背景の一部を切り取り、作成してから挿入し直します(上記のように)。
これは一般的なことのように思われます。おそらく、位置を指定するオプションがあるはずです。