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&#39;t be able to &#39;read&#39; it as a .BMP file.<br>
<br>(using XP SP2 and DirectX 9.0c ... I haven&#39;t tried this on Vista yet)<br><br><div class="gmail_quote">On Fri, Mar 6, 2009 at 5:50 AM, Wichert Akkerman <span dir="ltr">&lt;<a href="mailto:wichert@simplon.biz">wichert@simplon.biz</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">The first image:<br>
<br>
&gt;&gt;&gt; i=PIL.Image.open(open(&quot;/Users/wichert/Desktop/dont.bmp&quot;))<br>
&gt;&gt;&gt; i<br>
&lt;PIL.BmpImagePlugin.BmpImageFile instance at 0x43f490&gt;<br>
&gt;&gt;&gt; i.mode<br>
&#39;RGB&#39;<br>
&gt;&gt;&gt; i.size<br>
(290, 4294967075L)<br>
&gt;&gt;&gt; i.tile<br>
[(&#39;raw&#39;, (0, 0, 290, 4294967075L), 54, (&#39;BGR&#39;, 872, -1))]<br>
<br>
and the second image:<br>
<br>
&gt;&gt;&gt; i=PIL.Image.open(open(&quot;/Users/wichert/Desktop/dont2.bmp&quot;))<br>
&gt;&gt;&gt; i.mode<br>
&#39;RGB&#39;<br>
&gt;&gt;&gt; i.size<br>
(288, 4294967078L)<br>
&gt;&gt;&gt; i.tile<br>
[(&#39;raw&#39;, (0, 0, 288, 4294967078L), 54, (&#39;BGR&#39;, 864, -1))]<br>
<br>
<br>
Regards,<br><font color="#888888">
Wichert.</font><div><div></div><div class="h5"><br>
<br>
On 3/5/09 6:41 PM, Fredrik Lundh wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Can you print the following attributes for a broken file, before calling load:<br>
<br>
     pil_data.mode<br>
     pil_data.size<br>
     pil_data.tile<br>
<br>
&lt;/F&gt;<br>
<br>
2009/3/3 Wichert Akkerman&lt;<a href="mailto:wichert@simplon.biz" target="_blank">wichert@simplon.biz</a>&gt;:<br>
   <br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I have a small routine which tries to verify if an uploaded file is a valid<br>
image. It works like this:<br>
<br>
         image_data=StringIO(data)<br>
         try:<br>
             pil_data=PIL.Image.open(image_data)<br>
         except IOError: # PIL abuses IOError to report parsing errors<br>
             raise Invalid(self.message(&quot;bad_image&quot;, state),<br>
                     value, state)<br>
<br>
         pil_data.load()<br>
         (width,height)=pil_data.size<br>
<br>
For some images I get an OverflowError on the load() call:<br>
<br>
Module PIL.ImageFile:155 in load<br>
     <br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

   self.load_prepare()<br>
         <br>
</blockquote></blockquote>
Module PIL.ImageFile:223 in load_prepare<br>
     <br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

   <a href="http://self.im" target="_blank">self.im</a> = Image.core.new(self.mode, self.size)<br>
         <br>
</blockquote></blockquote>
OverflowError: long int too large to convert to int<br>
<br>
I can not find any information as to what the problem might be. It seems to<br>
only occur for bmp files; jpeg and png appear to work correctly.<br>
<br>
This is using PIL 1.1.6 and Python 2.5 on a Linux system.<br>
<br>
Wichert.<br>
&lt;&lt;                       self.map = None<br>
<br>
                self.load_prepare()<br>
<br>
                # look for read/seek overrides<br>
&lt;&lt;           if not <a href="http://self.im" target="_blank">self.im</a> or\<br>
                   self.im.mode != self.mode or self.im.size != self.size:<br>
                    <a href="http://self.im" target="_blank">self.im</a> = Image.core.new(self.mode, self.size)<br>
                # create palette (optional)<br>
                if self.mode == &quot;P&quot;:<br>
_______________________________________________<br>
Image-SIG maillist  -  <a href="mailto:Image-SIG@python.org" target="_blank">Image-SIG@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/image-sig" target="_blank">http://mail.python.org/mailman/listinfo/image-sig</a><br>
<br>
<br>
     <br>
</blockquote></blockquote>
<br>
_______________________________________________<br>
Image-SIG maillist  -  <a href="mailto:Image-SIG@python.org" target="_blank">Image-SIG@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/image-sig" target="_blank">http://mail.python.org/mailman/listinfo/image-sig</a><br>
<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Howard Lightstone<br><a href="mailto:hlightstone@gmail.com">hlightstone@gmail.com</a><br><a href="mailto:howard@eegsoftware.com">howard@eegsoftware.com</a><br>