1

PILを使用しています

    im = Image.open(teh_file)
    if im:
        colors = im.resize( (1,1), Image.ANTIALIAS).getpixel((0,0)) # simple way to get average color
        red = colors[0] # and so on, some operations on color data

問題は、いくつかの場合 (非常に少数、特に単純な jpeg の正確な理由がわからない場合)、「colors[0]」行に「unsubscriptable object」が表示されることです。試した:

if colors: 

true になり、続行します。

if len(colors):

'len() of unsized object' を与える

  1. この例外が発生しないようにするには、どの条件を適用すればよいですか?
  2. 問題の原因は何ですか?
4

3 に答える 3

2

B&W 画像に RGB バンド (L バンド) がない場合、RGB 値のリストではなく、ピクセルの色の単一値を含む整数を返します。解決策はバンドをチェックすることです

im.getbands()

または私のニーズにとってより簡単なのは:

        if isinstance(colors, tuple):
            values = {'r':colors[0], 'g':colors[1], 'b':colors[2]}
        else:
            values = {'r':colors, 'g':colors, 'b':colors}
于 2009-03-22T19:43:35.437 に答える