簡體   English   中英

使用Python PIL庫將具有透明背景的圖像垂直淡化為透明

[英]Vertically fade an image with transparent background to transparency using Python PIL library

因此,我想淡出已經具有透明背景的圖像。

我在此問題中找到了非透明圖像的解決方案,但不適用於具有透明背景的圖像。 那么如何使具有透明背景的圖像垂直淡化為透明呢?

例如,我想要 舊形象 該圖像成為 新圖片 這個,仍然有透明的背景。

這是我用來創建透明圖像的代碼

bg = Image.new("RGBA", (width, height), (r,g,b,inputBgAlpha))
...
bg.paste(deviceBg, devicePadding, mask=deviceBg)

以下是我嘗試過的。 它導致背景為彩色而不是透明的。

# https://stackoverflow.com/a/19236775/2603230
arr = numpy.array(bg)
alpha = arr[:, :, 3]
n = len(alpha)
alpha[:] = numpy.interp(numpy.arange(n), [0, 0.55*n, 0.05*n, n], [255, 255, 0, 0])[:,numpy.newaxis]
bg = Image.fromarray(arr, mode='RGBA')

這里對代碼進行一些更改可以使其起作用:)

from PIL import Image

im = Image.open('bird.jpg')
width, height = im.size
pixels = im.load()
for y in range(int(height*.55), int(height*.75)):
    for x in range(width):
        alpha = pixels[x, y][3]-int((y - height*.55)/height/.20 * 255)
        if alpha <= 0:
            alpha = 0
        pixels[x, y] = pixels[x, y][:3] + (alpha,)
for y in range(y, height):
    for x in range(width):
        pixels[x, y] = pixels[x, y][:3] + (0,)
bg.save('birdfade.png')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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