如何使用Python PIL粘贴到特定位置?

rev*_*ion 6 python python-imaging-library

我正在尝试创建一个程序,该程序拍摄 128 个气球图像,这些图像的大小以固定的变化增加,并将每个图像粘贴到具有一定大小的固定图像的不同副本上,图像如下,还有代码,代码到目前为止我所做的是将它们粘贴到图像的左上角,我希望将每张图片粘贴到副本下边框的中间,所以问题主要在于区域变量创建 背景 气球图片

from PIL import Image

i = 0

while(i < 128):
    balloon = Image.open("NEAREST" + str(i) + ".jpg")
    canvas = Image.open("blank.jpg")

    area = (0 ,0,298+i,298+i)
    canvas.paste(balloon, area)
    canvas.save("PASTE"+str(i)+".jpg")
    i = i + 1
Run Code Online (Sandbox Code Playgroud)

Ser*_*uri 4

area设置的.paste()是粘贴的位置(左、上、右、下)。由于您将 left 和 top 设置为零,因此气球将粘贴在左上角。

要将其粘贴到底部中间,您必须计算该位置的正确值:

顶部的空间是背景的高度减去粘贴图像的高度,即425 - (298 + i),或只是425 - 298 - i127 - i

侧面的空间是顶部空间的一半。

这将为您提供以下代码:

from PIL import Image

i = 0

while(i < 128):
    balloon = Image.open("NEAREST" + str(i) + ".jpg")
    canvas = Image.open("blank.jpg")

    space = 127 - i

    area = (int(space/2), space, int(space/2) + 298 + i, 425)
    canvas.paste(balloon, area)
    canvas.save("PASTE"+str(i)+".jpg")
    i = i + 1
Run Code Online (Sandbox Code Playgroud)

请注意,这是根据您的情况进行硬编码的,即仅当背景为 425x425 像素时才有效。否则你必须根据图像大小动态计算它。