这是我想要实现的目标:
将多个产品图片调整为 500 x 500 像素
将所有这些调整大小的图像单独粘贴到 800 x 800 图像上,并作为单个图像输出
目前,我已成功完成第 1 步,但不知道如何继续第 2 步。这是我的第 1 步的代码:
from PIL import Image
import os, sys
path = "C:\\Users\\User\\Desktop\\Test\\"
dirs = os.listdir( path )
final_size = 500;
def resize_aspect_fit():
for item in dirs:
if item == '.png':
continue
if os.path.isfile(path+item):
im = Image.open(path+item)
f, e = os.path.splitext(path+item)
size = im.size
ratio = float(final_size) / max(size)
new_image_size = tuple([int(x*ratio) for x in size])
im = im.resize(new_image_size, Image.ANTIALIAS)
new_im = Image.new("RGBA", (final_size, final_size), (255,255,255,000))
new_im.paste(im, ((final_size-new_image_size[0])//2, (final_size-new_image_size[1])//2))
new_im.save(f + 'resized.png', 'PNG', quality=100)
resize_aspect_fit()
谢谢!
编辑:
这是一个图像插图,可以更好地解释我想要实现的目标。我有 2 个笑脸 (500 x 500),我需要将其多次粘贴到默认的 800 x 800 图像上(居中)以生成 2 个单独的 800 x 800 图像。
示例
你已经快到了,你可以使用带有偏移量的 .paste() 来粘贴到图像的中间。有点像:
Border_im = Image.open(pathToBorder)
product_im = Image.open(pathToProduct)
x_offset=150;
y_offset=150;
Border_im.paste(product_im, (x_offset,y_offset))
然后将border_im保存到一个新文件
我是一名优秀的程序员,十分优秀!