我對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
;注意那些黑色邊框(和奇怪的紫紅色圓點)。該文檔指出疊加圖像需要具有相同的尺寸。但是,這似乎是一種常見的情況,有人希望在另一幅圖像上放置一個帶有透明度的小圖標,並將它們組合成一幅圖像。
我沒有附屬於任何特定的圖書館,我很樂於接受想法和選擇。我試圖做的唯一事情就是保持簡單,所以創建一個完整的遊戲引擎或類似的東西來生成圖像可能會太多。
這是令人驚訝的容易和種類的無證。謝謝! – Chris
奇怪的fuscia點意味着PNG已經處於RGBA模式,您是如何解釋這一點的? –
@MarkRansom我只是在帶alpha通道的png上做過Image.open(),並且注意到在我可以將它用作掩碼之前,RGBA轉換仍然是必需的。 –