Python 如何强制枕头将图像调整为任意大小?

Python 如何强制枕头将图像调整为任意大小?,python,image-processing,python-imaging-library,Python,Image Processing,Python Imaging Library,我需要调整图像大小,从所有不同的大小到144x144 所有尺寸:968x565、25x48、400x400等。不知道输入。我正在使用Python中的枕头库。我不介意丢失纵横比 问题是:当使用resize方法时,一些图像会得到完全随机的大小。不总是这样,但只是其中一些不尊重我给这个方法的144x144的任意大小 我试着用MacOSX优胜美地的预览版来调整这些图片的大小,效果完美。我需要在枕头中做什么才能强制使用144x144大小,并至少像mac中的预览一样工作 我无法发布全部代码,但调整大小的代码

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

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

问题是:当使用
resize
方法时,一些图像会得到完全随机的大小。不总是这样,但只是其中一些不尊重我给这个方法的144x144的任意大小

我试着用MacOSX优胜美地的预览版来调整这些图片的大小,效果完美。我需要在枕头中做什么才能强制使用144x144大小,并至少像mac中的预览一样工作

我无法发布全部代码,但调整大小的代码片段是:

#!/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
方法返回一个 新的图像对象,您没有存储在任何地方。原始图像
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)
>>> 

你有没有一个具体的例子不起作用?因为它对我有用。@Markransem你有imagemagick吗?我创建了一个有此问题的示例:
convert-size 952x804 xc:wheat canvas\u wheat.jpg
。如果你没有,你可以从@MarkRansom下载样本。我还添加了一个小片段。对不起,我没有Imagemagick。我确实下载了你的样本,它的大小调整到144x144,对我来说很好。我用的是原版的PIL,而不是枕头。您得到的输出大小是多少?@MarkRansom相同,好像根本没有调整大小一样。@MarkRansom是对的。“你知道它会创建一个新图像,对吧?它不会修改现有图像。”。“我需要睡觉了。”有人还在用你的DOS。这是一个容易犯的错误。PIL接口不一致,有时就地修改,有时返回新对象。Python本身并没有给你任何提示。方法名称是最后一个误导,它是一个动作动词,自然会让你认为它在修改图像。@MarkRansom:我同意PIL在这方面是不一致的。方法是打开文档,或者在运行时在交互式提示中尝试这些方法。