Python PIL:如何像这样用版权标志填充图像?

6
我需要通过加入版权标志来保护我的照片。我的操作系统是Ubuntu 10.10,使用Python 2.6。我打算使用PIL
假设我有一个像这样的版权标志(您可以在Photoshop中轻松完成此操作):

water mark logo

并且有这样的一张图片:

Original Picture

我想使用PIL获取如下所示的版权图片(用图案填充原始图片):

Copyrighted Picture

通过调整标志的不透明度来得出最终结果:

Final Result

有没有PIL中可以做到这一点的函数?有什么提示吗?
非常感谢!

1
这里有一个可能会有所帮助的配方,它只添加一个水印,所以您需要进行修改:http://code.activestate.com/recipes/362879-watermark-with-pil/ - ameer
这些链接可能会有所帮助:http://code.activestate.com/recipes/362879-watermark-with-pil/ .. http://hasanatkazmi.blogspot.com/2009/06/putting-watermark-to-images-in-batch.html - Acorn
2个回答

6
PIL 能够胜任这项任务。首先,您需要创建一个包含重复文本的图像。它应该是原始水印图像大小的两倍左右(因为您需要旋转并裁剪它)。您可以使用 Image.new() 创建这样的图像,然后在循环中使用 ImageDraw.Draw.text() 将文本反复粘贴到图像上,并使用图像的 rotate() 方法将其旋转大约 15 度。然后使用图像的 crop() 方法将其裁剪为原始图像的大小。
要合并它,首先您需要使用 ImageChops.multiply() 将水印叠加到原始图像的副本上(此时它的不透明度为 100%),然后使用 ImageChops.blend() 在所需的不透明度下混合带有水印的副本和原始图像。
以上内容足以让您开始解决问题-如果遇到障碍,请发布代码,展示您目前的进展,并指出您遇到困难的具体问题。

有没有一种方法可以在显示时临时添加水印,而不是保存副本? - Siva Sankar

2

仅作为示例:

#!/usr/bin/python
# -*- coding: utf-8 -*-

from PIL import Image

def fill_watermark():
    im = Image.open('a.jpg').convert('RGBA')
    bg = Image.new(mode='RGBA', size=im.size, color=(255, 255, 255, 0))
    logo = Image.open('logo.png')  # .rotate(45) if you want, bg transparent
    bw, bh = im.size
    iw, ih = logo.size
    for j in range(bh // ih):
        for i in range(bw // iw):
            bg.paste(logo, (i * iw, j * ih))
    im.alpha_composite(bg)
    im.show()
    
fill_watermark()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接