Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to solve IOError:broken data stream when reading image file?

Im working under Ubuntu 11.04. I'm trying to work with PIL in my Django project. Sadly PIL cannot load my image.

Here is the PIL setup summary:

PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      linux2 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24)
              [GCC 4.5.2]
--------------------------------------------------------------------
*** TKINTER support not available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support available
--- LITTLECMS support available
--------------------------------------------------------------------

I tried coding in python shell and it returns the error when I called load() function:

>>> import PIL
>>> import Image
>>> import _imaging
>>> i = Image.open("someimage.jpg")
>>> i
<JpegImagePlugin.JpegImageFile image mode=RGB size=600x599 at 0x9646C0C>
>>> i.load()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/joseph/Desktop/thesis/env/lib/python2.7/site-packages/PIL/ImageFile.py", line 215, in load
raise_ioerror(e)
File "/home/joseph/Desktop/thesis/env/lib/python2.7/site-packages/PIL/ImageFile.py", line 52, in raise_ioerror
raise IOError(message + " when reading image file")
IOError: broken data stream when reading image file

I am also working in a Virtual Environment, I am having problems with uploading jpeg image on my Django project. PNG works fine but it rejects JPEG

like image 710
Joseph Lafuente Avatar asked Oct 04 '11 18:10

Joseph Lafuente


3 Answers

sudo apt-get install libjpeg8-dev

rebuild PIL and install again.

like image 97
Joseph Lafuente Avatar answered Oct 16 '22 07:10

Joseph Lafuente


I had the same problem, but unfortunately we were using RHEL which only had libjpeg 6b.

Digging into this problem further, this error seems to occur when you are using a JPEG feature that isn't supported in the version of libjpeg you're using. In my case it was arithmetic encoding (introduced in version 7).

I found the wikipedia page on libjpeg to be helpful in determining which types of JPEG files could be opened by which versions. so...

TL;DR

Upgrade libjpeg if you can or re-save your images as baseline JPEG's.

like image 28
AaronAsAChimp Avatar answered Oct 16 '22 06:10

AaronAsAChimp


Use Pillow and report issues as they occur and the Pillow team will fix them. Bonus points for submitting a pull request along with your issue report. Also see: https://stackoverflow.com/a/7770547/185820

like image 1
aclark Avatar answered Oct 16 '22 06:10

aclark