2009-09-02 9 views
2

Python初心者の質問。以下のコードは、私の問題を説明する必要があります。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 

この1作品:

im.resize(resolution , Image.ANTIALIAS) 

答えて

2

あなたが言ったように、im.resize(resolution , Image.ANTIALIAS)はあなたが取る必要があるソリューション

ですこれよりも気になるのはim.resize(resolution , "Image.ANTIALIAS")とは異なります。

例では、変数scalerには、値Image.ANTIALIASとは異なる文字列"Image.ANTIALIAS"が値として含まれています。

XXXX表す文字列は、文字列"12"が整数12より完全に異なっているとおりに、値XXXXより異なります。

7

さて、その後、Image.ANTIALIASが文字列ではないので、一人としてそれを扱うことはありません。

scaler = Image.ANTIALIAS 
3

@ThibThibは「Image.ANTIALIAS」を使用してImage.ANTIALIASと同じものではありません言ったように。 しかし、あなたは常にあなたが次のことを行うことができます文字列としてリサンプル値を取得することが予想される場合は:

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

im.resize(resolution , resample[scaler]) 
+0

または、おそらく: 'im.resize(解像度、GETATTR(画像、スケーラー))' – tzot

関連する問題