I sent two images demonstrating the problem to Fredrik off-list.

I suspect this is a fairly common problem: I have seen this error occur several when users try to upload a member portrait to a community site, and at this moment only a handful users have access to it since it is still in a closed test phase.

Wichert.



On 3/6/09 5:43 PM, Fredrik Lundh wrote:
Does anyone have a (preferrably) small example, or a simple way to
create a broken file on a stock Windows XP machine?  An URL or an
off-list mail works fine.

</F>

On Fri, Mar 6, 2009 at 4:52 PM, Howard Lightstone
<how...@eegsoftware.com>  wrote:
This LOOKS like a bug in Windows XP which creates .BMP files via DirectX
with an incorrect bitmap header size (54 vice 40).  Changing the 54 to 40
makes the file readable again.  Most utilities seem to ignore this but
Windows itself won't be able to 'read' it as a .BMP file.

(using XP SP2 and DirectX 9.0c ... I haven't tried this on Vista yet)

On Fri, Mar 6, 2009 at 5:50 AM, Wichert Akkerman<wich...@simplon.biz>
wrote:
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<wich...@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@python.org
http://mail.python.org/mailman/listinfo/image-sig



_______________________________________________
Image-SIG maillist  -  Image-SIG@python.org
http://mail.python.org/mailman/listinfo/image-sig


--
Howard Lightstone
hlightst...@gmail.com
how...@eegsoftware.com


_______________________________________________
Image-SIG maillist  -  Image-SIG@python.org
http://mail.python.org/mailman/listinfo/image-sig

Reply via email to