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)
您area设置的.paste()是粘贴的位置(左、上、右、下)。由于您将 left 和 top 设置为零,因此气球将粘贴在左上角。
要将其粘贴到底部中间,您必须计算该位置的正确值:
顶部的空间是背景的高度减去粘贴图像的高度,即425 - (298 + i),或只是425 - 298 - i或127 - 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 像素时才有效。否则你必须根据图像大小动态计算它。