2

ロールオーバーの背景画像として使用する画像を作成する必要があります。8分割した円形の模様です。メイン画像のスクリーングラブは次のとおりです(透明なpng):

メイン画像

そして、これがマスク画像のスクリーングラブです。メイン画像と同じサイズで、ホバリングされているセクターを除くすべてをマスクするために「パイ」ピースが特徴です。

マスク画像

答えは非常に単純であるべきだと思うので(知っていれば、すべての答えは単純ではありませんか?!)、帯域幅を節約しますが、役立つ場合は元のファイルをアップロードできます。

新しいマスクされた画像を作成するために使用しているコマンドは次のとおりです。

convert main.png \( mask.png -colorspace gray -alpha off \) \
-compose copy-opacity -composite new.png

問題は、作成された新しい画像が元の画像のアルファを黒い背景に平坦化したことです。

新しいイメージ

Imagemagick で元の png の透明度を維持するにはどうすればよいですか?

4

2 に答える 2

4

これを行うには、マスクされたコンポジションが必要です。 http://imagemagick.org/Usage/compose/#mask

この手法は、元の画像 (src) を同じサイズ (dst) の完全に透明な画像に合成し、マスクを使用して構成領域 (マスク) を制限することです。これは-compositeオペレーターの特殊なケースであり、残りの構成メソッドのように 2 つではなく、3 つのイメージが関係します。-composeこれにはモードを指定しません。

この手法に必要な完全に透明な dst を取得する簡単な方法は、src イメージのクローンを作成し、そのアルファ チャネルをゼロにしてから、src と dst の順序を入れ替えて、-composite操作が正しい順序になるようにすることです。

convert main.png -alpha on \( +clone -channel a -fx 0 \) +swap mask.png -composite out.png
于 2014-03-14T23:40:07.697 に答える
1

マスクのグレースケールを無視しているように見えるため、 retroj のソリューションには満足できませんでした。

これは私のために働いた:

composite -compose Dst_In \( mask.png -alpha copy \) main.png -alpha Set PNG32:result.png

また

convert -compose Dst_In \( mask.png -alpha copy \) main.png -alpha Set -composite PNG32:result.png

Dst_Inメソッドは、2 つの画像のアルファ チャネルを乗算します。ここでのトリックは、グレースケール マスクをアルファ チャネルに変換すること-alpha copyです。

于 2017-02-21T03:44:14.233 に答える