Python PIL:以百分比比例使图像透明
如何使Python PIL:以百分比比例使图像透明,python,python-imaging-library,Python,Python Imaging Library,如何使水印图像透明?例如,60%透明。我试过使用putalpha,但似乎没有达到预期效果 from PIL import Image temp_image = Image.open('test1.jpg') watermark = Image.open('watermark.png') x, y = temp_image.size image_with_watermark = Image.new('RGBA', (x, y), (0, 0, 0, 0)) image_with_water
水印
图像透明?例如,60%透明。我试过使用putalpha
,但似乎没有达到预期效果
from PIL import Image
temp_image = Image.open('test1.jpg')
watermark = Image.open('watermark.png')
x, y = temp_image.size
image_with_watermark = Image.new('RGBA', (x, y), (0, 0, 0, 0))
image_with_watermark.paste(temp_image, (0, 0))
image_with_watermark.paste(watermark, (0, 0), mask=watermark)
image_with_watermark.show()
编辑:
好的,这是可行的,需要弄清楚如何使用%
from PIL import Image
temp_image = Image.open('test1.jpg')
watermark = Image.open('watermark.png')
x, y = temp_image.size
watermask = watermark.convert("L").point(lambda x: min(x, 50))
watermark.putalpha(watermask)
image_with_watermark = Image.new('RGBA', (x, y), (0, 0, 0, 0))
image_with_watermark.paste(temp_image, (0, 0))
image_with_watermark.paste(watermark, (0, 0), mask=watermark)
image_with_watermark.show()
meh,以下情况下水印的质量非常低:
watermask = watermark.convert("L").point(lambda x: min(x, 50))
watermark.putalpha(watermask)
实现我所需的最佳方法是什么?以下是一个同时适用于RGB和RGBA水印图像的解决方案:
from PIL import Image
TRANSPARENCY = 65 # percentage
temp_image = Image.open('test1.jpg')
watermark = Image.open('watermark.png')
if watermark.mode!='RGBA':
alpha = Image.new('L', watermark.size, 255)
watermark.putalpha(alpha)
paste_mask = watermark.split()[3].point(lambda i: i * TRANSPARENCY / 100.)
temp_image.paste(watermark, (0,0), mask=paste_mask)
temp_image.save('res.png')
示例图像(作者-):
样本水印(背景是透明的):
样本结果: