Python(图像库):将字符串重新取样作为参数

时间:2009-09-02 11:03:37

标签: python python-imaging-library

Python初学者问题。下面的代码应该解释我的问题:

import Image

resolution = (200,500)
scaler = "Image.ANTIALIAS"

im = Image.open("/home/user/Photos/DSC00320.JPG")

im.resize(resolution , scaler)

结果:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/dist-packages/PIL/Image.py", line 1255, in resize
    raise ValueError("unknown resampling filter")
ValueError: unknown resampling filter

这个有效:

im.resize(resolution , Image.ANTIALIAS)

4 个答案:

答案 0 :(得分:7)

那么,Image.ANTIALIAS不是字符串,所以不要把它当作一个字符串:

scaler = Image.ANTIALIAS

答案 1 :(得分:3)

正如@ThibThib所说,使用“Image.ANTIALIAS”与Image.ANTIALIAS不同。 但是,如果您始终希望将重新采样值作为字符串获取,则可以执行以下操作:

scaler = 'ANTIALIAS'
resample = {
    'ANTIALIAS': Image.ANTIALIAS,
    'BILINEAR': Image.BILINEAR,
    'BICUBIC': Image.BICUBIC
}

im.resize(resolution , resample[scaler])

答案 2 :(得分:2)

如你所说,im.resize(resolution , Image.ANTIALIAS)是解决方案

你必须小心,而不是im.resize(resolution , "Image.ANTIALIAS")

在您的示例中,变量scaler将字符串"Image.ANTIALIAS"作为值,与值Image.ANTIALIAS不同。

表示 xxxx 的字符串与值 xxxx 不同,正如字符串"12"与整数完全不同12

答案 3 :(得分:0)

我知道我在重新提出一个老问题,但为了帮助任何人在现代处理与此类似的事情。

Pillow 不再支持 ANTIALIAS 过滤器。

上述解决方案(虽然适用于 2009 年的 PIL 和 Pillow 版本),但仍会导致当前版本的 Pillow 出现 ValueError: unknown resampling filter