Python PIL:如何用版权标志填充图像?
我想通过在照片上加版权标志来保护我的照片。我的操作系统是Ubuntu 10.10,使用的是Python 2.6。我打算用PIL这个库。
假设我有一个这样的版权标志(在Photoshop里可以很简单地做到):
还有一张这样的图片:
我想用PIL把原始图片变成带版权的样子(用图案填充原图):
通过调整标志的透明度,得到的最终效果:
PIL里有没有什么函数可以做到这一点?有什么提示吗?
非常感谢!
2 个回答
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()
6
PIL确实可以做到这一点。首先,你需要创建一个包含重复文本的图片。这个图片的大小应该大约是你想要加水印的图片的两倍(因为你需要旋转它,然后裁剪)。你可以使用 Image.new()
来创建这样的图片,然后用 ImageDraw.Draw.text()
在一个循环中不断地把你的文本贴上去,再用图片的 rotate()
方法把它旋转大约15度。最后,使用图片的 crop()
方法把它裁剪成原始图片的大小。
要把它们合在一起,首先你需要用 ImageChops.multiply()
把水印叠加到原始图片的副本上(这时候副本的透明度是100%),然后用 ImageChops.blend()
把带水印的副本和原始图片按照你想要的透明度混合在一起。
这些信息应该能让你开始动手了——如果遇到问题,可以把你目前的代码发出来,并问一个具体的问题,说明你在哪方面遇到了困难。