如何强制 Pillow 将图像调整为任意大小?

How to force Pillow to resize an image to an arbitrary size?

我需要调整图像的大小,从所有不同的尺寸到 144x144。

所有尺寸:从 968x565、从 25x48、从 400x400 等。不知道输入。我正在使用来自 Python 的 Pillow 库。我不介意丢失纵横比。

问题是:当使用 resize 方法时,一些图像的大小完全随机。并非总是如此,但只是其中一些不遵守我为该方法提供的 144x144 的任意大小。 Here is a sample.

我尝试使用 Mac OS X Yosemite 的预览来调整这些图像的大小,并且效果完美。我需要在 Pillow 中做什么才能强制使用 144x144 大小并至少像 mac 中的预览一样工作?

我无法 post 整个代码,但调整大小的片段是:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from PIL import Image

im = Image.open('canvas_wheat.jpg')
im.resize((144, 144), Image.ANTIALIAS)
im.save('144.jpg', optimize=True, quality=20)

你遇到的问题是 resize 方法 returns new 图像对象,您没有存储在任何地方。原图im和加载的一样。

检查此交互式会话中的示例:

>>> from PIL import Image
>>> img = Image.open("image.jpg")
>>> img.size
(952, 804)
>>> img2 = img.resize((144,144), Image.ANTIALIAS)
>>> img.size
(952, 804)
>>> img2.size
(144, 144)
>>>