【问题标题】:Watermarking Image using Pillow使用 Pillow 为图像添加水印
【发布时间】:2021-06-18 08:25:43
【问题描述】:

我正在尝试为图像添加水印,但是如果不粘贴带有背景颜色的水印,我将无法这样做。 (见下例)

我尝试从以下website实现教程。

从下图可以看出,当前结果显示带有黑色背景的水印,这是不可取的。 (有关所需结果,请参见预期结果图片)

我正在使用 Linux/Ubuntu 20.04 和 Python 3.8

这是内容:

背景图片

水印图片

目前的成果

预期结果

水印透明后的结果

以下是我使用的代码,与网站教程示例相同。

#adding transparency to watermark image(as suggested)
from PIL import Image, ImageFilter
img = Image.open('path_to_watermark').convert('RGBA')
img.putalpha(130) 
img.save('path_to_watermark')


def watermark_with_transparency(input_image_path, output_image_path, watermark_image_path, position):
    base_image = Image.open(input_image_path).convert('RGBA')
    watermark = Image.open(watermark_image_path).convert('RGBA')
    width, height = base_image.size
    transparent = Image.new('RGBA', (width, height), (0,0,0,0))
    transparent.paste(base_image, (0,0))
    transparent.paste(watermark, position, mask=watermark)
    transparent.show()
    transparent.save(output_image_path)

if __name__ == '__main__':
    img = 'path_to_input_image /home/...'
    watermark_with_transparency(img, 'path_to_output', 'path_to_watermark', position=(0,0))

我做错了什么?感谢您的帮助。

【问题讨论】:

  • 您的水印图片需要具有透明度。
  • 谢谢。根据您的建议,我已经用代码和结果更新了问题。但是还有一些东西要添加(见上面的新图片)。
  • 让我更清楚一点:水印图像需要有透明区域在文件中。这是一个在图像编辑程序中解决的问题,而不是在代码中。

标签: python python-imaging-library watermark


【解决方案1】:

您正在粘贴一个没有透明度的图像。 作为PNG,并不意味着它包含透明度,而是一个alpha层,在这种情况下,每个像素都等于255

不需要用putalpha让它透明,你只需要一个黑色区域透明的PNG文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-15
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    相关资源
    最近更新 更多