5

我需要用版权标志来保护我的照片。我的操作系统是 Ubuntu 10.10 和 Python 2.6。我打算使用PIL

假设我有一个这样的版权标志(你可以在 Photoshop 中轻松地做到这一点):

水印标志

和这样的图片:

原图

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

受版权保护的图片

通过更改徽标的不透明度获得最终结果:

最后结果

PIL中是否有任何功能可以做到这一点?有什么提示吗?

非常感谢!

4

2 回答 2

6

PIL当然有能力做到这一点。首先,您需要创建一个包含重复文本的图像。它应该是,哦,可能是您想要添加水印的图像大小的两倍(因为您需要旋转它然后裁剪它)。您可以使用Image.new()创建这样的图像,然后ImageDraw.Draw.text()在循环中反复将文本粘贴到其上,并将图像的rotate()方法旋转 15 度左右。然后使用图像的方法将其裁剪为原始图像的大小crop()

要首先组合它,您需要使用ImageChops.multiply()将水印叠加到原始图像的副本上(它将具有 100% 的不透明度),然后ImageChops.blend()以所需的不透明度将水印副本与原始图像混合。

这应该为您提供足够的信息以继续前进 - 如果您遇到障碍,发布代码以显示您到目前为止所获得的内容,并询问您遇到困难的具体问题。

于 2011-07-06T17:48:47.380 回答
0

只是一个样本:</p>

#!/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()
于 2019-10-17T06:39:20.547 回答