【问题标题】:Python PIL: How to FIll a Image with a copyright logo like this?Python PIL:如何用这样的版权标志填充图像?
【发布时间】:2011-07-06 17:34:52
【问题描述】:
我需要用版权标志来保护我的照片。我的操作系统是 Ubuntu 10.10 和 Python 2.6。我打算使用PIL。
假设我有这样的版权标志 (You can do this in Photoshop easily):
还有这样的图片:
我想使用 PIL 来获取如下版权图片(用图案填充原始图片):
通过改变徽标的不透明度获得最终结果:
PIL 中是否有任何功能可以做到这一点?有什么提示吗?
非常感谢!
【问题讨论】:
标签:
python
image-processing
python-imaging-library
photoshop
copyright-display
【解决方案1】:
PIL 当然可以做到这一点。首先,您需要创建一个包含重复文本的图像。它应该是,哦,可能是您想要添加水印的图像大小的两倍(因为您需要旋转它然后裁剪它)。您可以使用Image.new() 创建这样的图像,然后在循环中使用ImageDraw.Draw.text() 将文本反复粘贴到其上,然后使用图像的rotate() 方法将其旋转15 度左右。然后使用图片的crop()方法将其裁剪成原始图片的大小。
首先要结合它,您需要使用ImageChops.multiply() 将水印叠加到原始图像的副本上(它将具有 100% 的不透明度),然后使用ImageChops.blend() 将水印副本与原始图像混合在所需的不透明度。
这应该可以为您提供足够的信息以帮助您继续前进 - 如果您遇到障碍,请发布代码以显示您到目前为止所获得的内容,并就您遇到的困难提出一个具体问题。
【解决方案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()