2009-05-28 5 views
2
from PIL import ImageFile as PILImageFile 

p = PILImageFile.Parser() 

#Parser the data 
for chunk in content.chunks(): 
    p.feed(chunk)  
try: 
    image = p.close() 
except IOError:       
    return None 
#Here the model is RGBA 
if image.mode != "RGB": 
    image = image.convert("RGB") 

Il toujours se coincer dans ici:problème dans la poignée PNG par le PIL

image = image.convert("RGB") 

File "C:\Python25\Lib\site-packages\PIL\Image.py" in convert 
    653.   self.load() 
File "C:\Python25\Lib\site-packages\PIL\ImageFile.py" in load 
    189.      s = read(self.decodermaxblock) 
File "C:\Python25\Lib\site-packages\PIL\PngImagePlugin.py" in load_read 
    365.   return self.fp.read(bytes) 
File "C:\Python25\Lib\site-packages\PIL\ImageFile.py" in read 
    300.    data = self.data[pos:pos+bytes] 

Exception Type: TypeError at 
Exception Value: 'NoneType' object is unsubscriptable 
+0

Pour un autre type d'image, par exemple jpg etc, il n'y avait pas de problème. –

Répondre

0

Il en résulte d'un codage incorrect de près au sein de PIL, est un bug.

Modifier le fichier (chemin peut être différent sur votre système):

vi /usr/lib64/python2.6/site-packages/PIL/ImageFile.py sudo

283 en ligne Modifier:

def close(self): 
    self.data = self.offset = None 

Modifier à:

def close(self): 
    #self.data = self.offset = None 
    self.offset = None 

C'est-à-dire, commentez le code brisé, ajoutez la ligne correcte et enregistrez le fichier. Tout est fait, exécutez simplement le programme qui échouait avant et cela fonctionnera maintenant.

Questions connexes