[英]Python (PIL): Lighten transparent image and paste to another one
我有兩個相同大小的 png 圖像(A 和 B),第二個(B)是部分透明的。
如果我使用代碼將圖像 B 粘貼到圖像 A 中
base.paste(overlay, mask=overlay)
我得到了它們的近乎完美的組合。
但是我想在將圖像 B 粘貼到圖像 A 之前使圖像 B 變亮。我嘗試使用像 Image.new("L", size, 80) 這樣的蒙版,我可以用它使圖像 (B) 變亮,但它也會使圖像變暗( A) 並且不得修改。
在命令行上,我可以像這樣使用 ImageMagick 做我想做的事:
composite -dissolve 40 overlay.png base.png result.png
這正是我所需要的,但是我如何用 python 做到這一點。
根據我自己的理解,溶解選項僅修改 alpha 通道。 所以,如果你想讓你的 alpha 通道只保留它的 40% 的值,你在 PIL 中做同樣的事情:
from PIL import Image
overlay = Image.open('overlay.png')
base = Image.open('base.png')
bands = list(overlay.split())
if len(bands) == 4:
# Assuming alpha is the last band
bands[3] = bands[3].point(lambda x: x*0.4)
overlay = Image.merge(overlay.mode, bands)
base.paste(overlay, (0, 0), overlay)
base.save('result.png')
在此代碼中,我將圖像拆分為多個波段。 如果有四個,我假設最后一個代表 alpha 通道。 所以我簡單地乘以 0.4 (40%) 它的值,並創建一個新的圖像來粘貼在基礎圖像上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.