14

PIL で画像を開きましたが、使用split()してチャンネルを分割しようとすると、次のエラーが発生しました。 AttributeError: 'NoneType' object has no attribute 'bands'

import Image
img = Image.open('IMG_0007.jpg')

img.split()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)

/home/blum/<ipython console> in <module>()

/usr/lib/python2.6/dist-packages/PIL/Image.pyc in split(self)
   1495         "Split image into bands"
   1496 
-> 1497         if self.im.bands == 1:
   1498             ims = [self.copy()]
   1499         else:

AttributeError: 'NoneType' object has no attribute 'bands'
4

2 に答える 2

34

グーグルで私はSOに関するこのコメントを見つけ、PILは時々「怠惰」 であり、開いた後にロードするのを「忘れる」と述べました。したがって、次のようにする必要があります。

import Image
img = Image.open('IMG_0007.jpg')
img.load()
img.split()

元のコメントも+1してください!この人が実際の仕事をしました。

于 2012-09-13T19:44:33.880 に答える
4

私の問題は、PIL が正しくインストールされていなかったことです。png を読み取ろうとすると、そのエラーが発生します。私のコンパイルの要約が得られました

--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      linux2 2.7.3 (default, Apr 21 2012, 01:05:55)
              [GCC 4.6.3]
--------------------------------------------------------------------
*** TKINTER support not available
*** JPEG support not available
*** ZLIB (PNG/ZIP) support not available <===============
*** FREETYPE2 support not available
*** LITTLECMS support not available
--------------------------------------------------------------------

次に、「pip uninstall pil」を選択し、代わりに Synaptic Package Manager を使用しました。それはそれを修正しました。

于 2013-06-27T07:24:53.067 に答える