如何将水印放在图像的中心位置?

Ras*_*ziz 0 python automation watermark image pillow

我有 10k 个图像,所以我试图使用 Pillow 库将水印放在所有图像上,但水印位置总是在变化,如下图所示。

我想把水印放在每张图片的中心位置,水印不应该离图片太大和太小,它应该适合每张图片,所以你能告诉我我该怎么做吗?

这是水印图片: 在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

我正在使用此代码:

from PIL import Image
import glob


def watermark_with_transparency(input_image_path, output_image_path, watermark_image_path, position):
    base_image = Image.open(input_image_path) #open base image
    watermark = Image.open(watermark_image_path) #open water mark
    width, height = base_image.size #getting size of image

    transparent = Image.new('RGBA', (width, height), (0,0,0,0))
    transparent.paste(base_image, (0,0))
    transparent.paste(watermark, position, mask=watermark)
    #transparent.show()
    transparent.convert('RGB').save(output_image_path)
    print 'Image Done..!'



for inputImage in glob.glob('images/*.jpg'):
    output = inputImage.replace('images\\','')
    outputImage = 'watermark images\\'+str(output)

    watermark_with_transparency(inputImage, outputImage, 'watermark.png', position=(0,0)) #function
Run Code Online (Sandbox Code Playgroud)

小智 9

您将位置传递为 0,0。如果您希望它居中,那么您应该通过将图像的宽度和高度除以 2 并从中减去水印的宽度和高度除以 2 来更新函数内的位置。

X coordinate = width_of_image/2 - width_of_watermark/2

Y coordinate = height_of_image/2 - height_of_watermark/2
Run Code Online (Sandbox Code Playgroud)

样本

这是一个示例代码:

width_of_watermark , height_of_watermark = watermark.size
position = ((width/2-width_of_watermark/2),(height/2-height_of_watermark/2))
Run Code Online (Sandbox Code Playgroud)