python - 如何将边框图像(常量)粘贴到多个缩略图上?

标签 python image python-imaging-library

这是我想要实现的目标:

  1. 将多个产品图片调整为 500 x 500 像素

  2. 将所有这些调整大小的图像单独粘贴到 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保存到一个新文件

关于python - 如何将边框图像(常量)粘贴到多个缩略图上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54238818/

相关文章:

python - 在 Python 脚本中循环运行 Bash 命令

python - 如何添加到简短的 python 列表?

c# - 使用 C# 组合框放置图像和字符串

python - 如何用python对扫描页面进行逐字切片?

python - 设置 ImageGrab 从中获取像素颜色的位置

python - python中两个元组之间的区别是什么?

python - python中所有可能的组合

javascript - 在 jQuery 1.8+ 中检测图像加载 - 自弃用以来替代 load()

c# - 如何使用 SQLite 数据库和 WPF 应用程序存储和检索图像?

image-processing - 除了标准/渐进式,第三种JPEG压缩: load by channel?