[Image-SIG] OverflowError on image save

Wichert Akkerman wichert at simplon.biz
Fri Mar 6 14:50:11 CET 2009


The first image:

 >>> i=PIL.Image.open(open("/Users/wichert/Desktop/dont.bmp"))
 >>> i
<PIL.BmpImagePlugin.BmpImageFile instance at 0x43f490>
 >>> i.mode
'RGB'
 >>> i.size
(290, 4294967075L)
 >>> i.tile
[('raw', (0, 0, 290, 4294967075L), 54, ('BGR', 872, -1))]

and the second image:

 >>> i=PIL.Image.open(open("/Users/wichert/Desktop/dont2.bmp"))
 >>> i.mode
'RGB'
 >>> i.size
(288, 4294967078L)
 >>> i.tile
[('raw', (0, 0, 288, 4294967078L), 54, ('BGR', 864, -1))]


Regards,
Wichert.

On 3/5/09 6:41 PM, Fredrik Lundh wrote:
> Can you print the following attributes for a broken file, before calling load:
>
>      pil_data.mode
>      pil_data.size
>      pil_data.tile
>
> </F>
>
> 2009/3/3 Wichert Akkerman<wichert at simplon.biz>:
>    
>> I have a small routine which tries to verify if an uploaded file is a valid
>> image. It works like this:
>>
>>          image_data=StringIO(data)
>>          try:
>>              pil_data=PIL.Image.open(image_data)
>>          except IOError: # PIL abuses IOError to report parsing errors
>>              raise Invalid(self.message("bad_image", state),
>>                      value, state)
>>
>>          pil_data.load()
>>          (width,height)=pil_data.size
>>
>> For some images I get an OverflowError on the load() call:
>>
>> Module PIL.ImageFile:155 in load
>>      
>>>>    self.load_prepare()
>>>>          
>> Module PIL.ImageFile:223 in load_prepare
>>      
>>>>    self.im = Image.core.new(self.mode, self.size)
>>>>          
>> OverflowError: long int too large to convert to int
>>
>> I can not find any information as to what the problem might be. It seems to
>> only occur for bmp files; jpeg and png appear to work correctly.
>>
>> This is using PIL 1.1.6 and Python 2.5 on a Linux system.
>>
>> Wichert.
>> <<                       self.map = None
>>
>>                 self.load_prepare()
>>
>>                 # look for read/seek overrides
>> <<           if not self.im or\
>>                    self.im.mode != self.mode or self.im.size != self.size:
>>                     self.im = Image.core.new(self.mode, self.size)
>>                 # create palette (optional)
>>                 if self.mode == "P":
>> _______________________________________________
>> Image-SIG maillist  -  Image-SIG at python.org
>> http://mail.python.org/mailman/listinfo/image-sig
>>
>>
>>      



More information about the Image-SIG mailing list