PIL 调整图像大小

时间:2021-03-06 00:06:49

标签: python python-imaging-library

所以我有这个代码

from PIL import Image

def get_concat_h_cut(im1, im2):
   dst = Image.new('RGB', (im1.width + im2.width,
                           min(im1.height, im2.height)))
   dst.paste(im1, (0, 0))
   dst.paste(im2, (im1.width, 0))
   return dst


def get_concat_v_cut(im1, im2):
   dst = Image.new(
       'RGB', (min(im1.width, im2.width), im1.height + im2.height))
   dst.paste(im1, (0, 0))
   dst.paste(im2, (0, im1.height))
   return dst

FileA = Image.open("dog.jpg")
FileB = Image.open("cat.jpg")

get_concat_v_cut(FileA, FileB).save('pillow_concat_v_cut.jpg')

但是由于猫图像的分辨率很小,程序调整了整个图像的大小,因此我看不到大部分狗图像。我该如何制作才能同时看到猫和狗?

猫图片:https://i.ibb.co/j58TRnt/cat.jpg

狗图片:https://i.ibb.co/d6jdsBC/dog.jpg

程序生成的图像:https://i.ibb.co/WkDdPTD/pillow-concat-v-cut.jpg

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果您希望保持狗图像的宽度不变,这将填充输出图像上猫图像右侧的黑色空间,您可以在 concat 函数中将 Image.new 的大小参数更改为 (max(im1.width, im2.width), im1.height+im2.height)

同样适用于您的 h-cut concat 函数,仅适用于高度参数。

如果您尝试将它们缩放到相同的大小,您可以对要缩放的任何一个调用 .resize() 方法,并将其他图像的高度和宽度变量作为大小参数传递给它。

您可以在此处找到更多信息: https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.resize