“错误:读取图像文件时数据流损坏”(OS X上的TrueType字体libjpeg和PIL)

时间:2011-06-05 20:23:02

标签: macos wxpython python-imaging-library true-type-fonts libjpeg

我正在运行OS X 10.6.7,Python 2.6,并编写一个小型wxPython应用程序,该应用程序使用PIL来操作图像并向其中添加一些文本。

在尝试使用libjpeg和PIL运行PIL之后发生了相当多的配置问题,我按照this site处的说明进行操作。

运行python setup.py build_ext -i(从Imaging-1.1.7文件夹中)我得到:

--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      darwin 2.6.1 (r261:67515, Jun 24 2010, 21:47:49)
          [GCC 4.2.1 (Apple Inc. build 5646)]
--------------------------------------------------------------------
--- TKINTER support available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support available
--- LITTLECMS support available
--------------------------------------------------------------------

此外,在Imaging-1.1.7安装文件夹中运行python selftest.py,我得到:

--------------------------------------------------------------------
PIL 1.1.7 TEST SUMMARY 
--------------------------------------------------------------------
Python modules loaded from ./PIL
Binary modules loaded from ./PIL
--------------------------------------------------------------------
--- PIL CORE support ok
--- TKINTER support ok
--- JPEG support ok
--- ZLIB (PNG/ZIP) support ok
--- FREETYPE2 support ok
--- LITTLECMS support ok
--------------------------------------------------------------------
Running selftest:
--- 57 tests passed.

但是,在我自己的代码中渲染我的第一个PIL图像时,我仍然得到:

File "/Library/Python/2.6/site-packages/PIL/Image.py", line 1290, in resize self.load()
File "/Library/Python/2.6/site-packages/PIL/ImageFile.py", line 215, in load raise_ioerror(e)
File "/Library/Python/2.6/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

我有点不知道下一步该尝试什么。有任何想法吗?导致此崩溃的代码似乎是:

try:
    self.img = self.img.resize((self.screenwidth, self.screenheight), 
            Image.ANTIALIAS)
    except IOError, e:
        print "Error resizing: " + str(e)
        self.img = self.img.resize((self.screenwidth, self.screenheight))
        raise 

3 个答案:

答案 0 :(得分:2)

您应该考虑卸载PIL并按照本网站上的说明进行操作 - http://jetfar.com/libjpeg-and-python-imaging-pil-on-snow-leopard/

特别是,您似乎希望确保libjpeg的版本 6b ,而不是 8c (见下文)


我可以使用macports

在Mac OS X 10.5中重现这一点

这与另一个问题有关: How to solve IOError:broken data stream when reading image file?

答案表明该错误可能与libjpeg

有关

据我所知,错误似乎是由与libjpeg v8c的向前不兼容引起的。

我无法确定导致这种情况的原因;我可以说的是,在我使用的各种其他系统上没有出现这种行为错误(OS X 10.5与fink,Redhat 5.2,Ubuntu 11.10和10.10),它们都使用libjpeg 6b。只有macports使用8c,而macports是我收到此错误的唯一系统。

答案 1 :(得分:1)

我能够将PIL与homebrew package manager一起使用。

答案 2 :(得分:0)

在使用最新的Python环境和Sierra Mac OS阅读.jpg文件时,我遇到了类似的错误。我找到了一个快速的解决方法,包括将所有.jpg文件转换为.png文件希望可以帮助其他人。