私はPythonの新機能で、ユーザーがカスタム画像を作成できるようにすることを検討しています。考え方は、クライアントがいくつかのオプションを選択し、サーバー上でイメージを作成してダウンロードする(またはサーバー側で他のものに使用する)というものです。透明度の異なるレイヤーの合成画像を作成する
イメージは多くのイメージで構成されています。イメージの多くは、不規則な形状で透明性のある小さなアイコンタイプのイメージです。すべての層は.png
ファイルです。
私は枕を使用しようとしましたが、画像は上部レイヤの透明度を適切に使用するために全体画像と同じサイズである必要があります。
は、ここで私はこれまで試したものです:
from PIL import Image
background = Image.open("Background.png")
foreground = Image.open("Trim.png")
fire = Image.open("Type_Fire_Large.png")
background = Image.alpha_composite(background, foreground)
background.paste(fire, (150, 150))
background.show()
画像は、次のようになります
Background.png
は影 "ノイズ" であるとTrim.png
はグレーの斜線です。最高の部分:Trim.png
は中央が透明で中央にBackground.png
と表示されます。しかし、それはまた画像と同じ大きさです。
問題はFire
です。どのようにその黒い境界線(そして奇妙なフクシアの点)theresを注意してください。ドキュメントには、オーバーレイイメージが同じサイズである必要があることが記載されています。しかし、誰かが別の画像の上に透明な小さなアイコンを配置し、それらを1つの画像に合成したいという一般的なシナリオのようです。
私は特定のライブラリには付いていませんが、私はアイデアや代替案を広く公開しています。私がやろうとしているのは、シンプルなので、画像を生成するためにゲームエンジン全体を作成することは、おそらく多すぎるでしょう。ちょうど別の上に1つのPNGを貼り付け
これは驚くほど簡単で、文書化されていません。ありがとうございました! – Chris
奇数のfusciaドットは、PNGがすでにRGBAモードであったことを意味しますが、これをどのように把握しましたか? –
@ MarkRansomアルファチャンネルのあるPngでImage.open()を実行したところ、マスクとして使用するにはRGBA変換がまだ必要であることに気付きました。 –