def fill_watermark():
im = Image.open('page.png').convert('RGBA')
bg = Image.new(MODE_RGBA, im.size, (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()
皮尔当然能做到这一点。首先,您需要创建一个包含重复文本的图像。它应该,哦,也许是你想要水印图像的两倍大小(因为你需要旋转它然后裁剪它)。您可以使用
Image.new()
创建这样的图像,然后ImageDraw.Draw.text()
在一个循环中反复将文本粘贴到它上,然后使用图像的rotate()
方法将其旋转15度左右。然后使用图像的crop()
方法将其裁剪为原始图像的大小。在要首先组合它,您需要使用
ImageChops.multiply()
将水印叠加到原始图像的副本上(它将具有100%的不透明度),然后使用ImageChops.blend()
以所需的不透明度将水印副本与原始图像混合。在如果你遇到了路障,这会给你足够的信息,让你知道目前为止你已经掌握了什么,并提出一个具体的问题,说明你有什么困难。在
只是一个样本:
def fill_watermark(): im = Image.open('page.png').convert('RGBA') bg = Image.new(MODE_RGBA, im.size, (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()
相关问题 更多 >
编程相关推荐