PIL:将一张图片粘贴到另一张图片上,计算位置

3

我想把一张图片粘贴到另一张图片上,但是无法计算除了左上角以外的位置。如何计算右上/下角和左下角的位置?

from io import BytesIO
from PIL import Image


def add_watermark():
    original_image = Image.open('test1.jpg')
    watermark = Image.open('watermark.png')

    watermark_width, watermark_height = watermark.size

    x, y = original_image.size
    margin = 40

    # left top
    position = ((0 + margin, 0 + margin))

    image_with_watermark = Image.new('RGBA', (x, y), (0, 0, 0, 0))
    image_with_watermark.paste(original_image, (0, 0))
    image_with_watermark.paste(watermark, position, mask=watermark)
    image_with_watermark.show()
    buffer = BytesIO()
    image_with_watermark.save(fp=buffer, format='jpeg')


add_watermark()

这个链接可能会有所帮助:粘贴一个图片 - Martin Evans
1个回答

4
请尝试以下操作,分别针对左上角、右上角、左下角和右下角:
position_tl = (0 + margin, 0 + margin)
position_tr = (x - margin - watermark_width, 0 + margin)
position_bl = (0 + margin, y - margin - watermark_height)
position_br = (x - margin - watermark_width, y - margin - watermark_height)

数值错误:在此行中,图像不匹配image_with_watermark.paste(watermark, position, mask=watermark) - paul
不要使用 mask 参数。请看我的第二个替换。 - Leo
仍然是一样的,顺便说一下,我的原始图像是.jpg格式,水印是.png格式。 - paul

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