簡體   English   中英

Python (PIL):使透明圖像變亮並粘貼到另一個圖像

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM