Python PIL 0.5不透明度,透明度,alph

2024-06-26 00:04:07 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有办法使图像半透明?

伪代码如下:

from PIL import Image
image = Image.open('image.png')
image = alpha(image, 0.5)

我在网上搜索了几个小时,但找不到有用的东西。


Tags: 代码from图像imageimportalphapilpng
3条回答

我把Pecan的答案和cr333的问题放在一起:

Using PIL to make all white pixels transparent?

。。。想到这个:

from PIL import Image

opacity_level = 170 # Opaque is 255, input between 0-255

img = Image.open('img1.png')
img = img.convert("RGBA")
datas = img.getdata()

newData = []
for item in datas:
    newData.append((0, 0, 0, opacity_level))
else:
    newData.append(item)

img.putdata(newData)
img.save("img2.png", "PNG")

在我的例子中,我有黑色背景的文本,只希望背景是半透明的,在这种情况下:

from PIL import Image

opacity_level = 170 # Opaque is 255, input between 0-255

img = Image.open('img1.png')
img = img.convert("RGBA")
datas = img.getdata()

newData = []
for item in datas:
    if item[0] == 0 and item[1] == 0 and item[2] == 0:
        newData.append((0, 0, 0, opacity_level))
    else:
        newData.append(item)

img.putdata(newData)
img.save("img2.png", "PNG")

我意识到这个问题很老了,但是对于当前版本的枕头(v4.2.1),有一个名为putalpha的函数。对我来说似乎很管用。我不知道在你需要改变alpha的每一种情况下是否都有效,但它确实有效。它为图像中的每个像素设置alpha值。看起来,虽然你可以使用一个掩码:http://www.leancrew.com/all-this/2013/11/transparency-with-pil/

像这样使用putalpha

from PIL import Image
img = Image.open(image)
img.putalpha(128)  # Half alpha; alpha argument must be an int
img.save(dest)

你能做这样的事吗?

from PIL import Image
image = Image.open('image.png') #open image
image = image.convert("RGBA")  #convert to RGBA
rgb = image.getpixel(x,y) #Get the rgba value at coordinates x,y
rgb[3] = int(rgb[3] / 2) or you could do rgb[3] = 50 maybe? #set alpha to half somehow
image.putpixel((x,y), rgb) #put back the modified reba values at same pixel coordinates

绝对不是最有效的做事方式,但它可能会起作用。我在浏览器中编写了代码,所以它可能不是无错误的,但希望它能给你一个想法。

编辑:刚刚注意到这个问题有多老了。把答案留给将来的帮助。:)

相关问题 更多 >