【问题标题】:"ERROR: broken data stream when reading image file" (TrueType fonts libjpeg and PIL on OS X)“错误:读取图像文件时数据流损坏”(OS X 上的 TrueType 字体 libjpeg 和 PIL)
【发布时间】:2011-06-05 20:23:01
【问题描述】:

我正在运行 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 

【问题讨论】:

  • 很遗憾,我无法再访问此环境,无法查看。我的解决方案是将基础环境切换到 Linux..
  • 您好 tom10,是的 import _imaging 工作正常。我可以使用 python 命令打开、调整大小、裁剪、创建带有图像的缩略图,但它在应用程序中不起作用:(

标签: macos wxpython python-imaging-library truetype libjpeg


【解决方案1】:

您应该考虑卸载 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 的前向不兼容引起的。

我无法确定究竟是什么原因造成的;我只能说,在我使用的各种其他没有出现这种行为错误的系统上(带有 fink 的 OS X 10.5、Redhat 5.2、Ubuntu 11.10 和 10.10),它们都使用 libjpeg 6b。只有 macports 使用 8c,而 macports 是唯一出现此错误的系统。

【讨论】:

  • 我会在星期二再检查一次,不,我不能这样做:(谢谢你的建议!
  • 是的... libjpeg8c 是问题所在。我已经卸载它并再次安装了6b。重新安装 PIL 并且它正在工作。我在某处读到这可能是问题所在,但不知何故忽略了它。非常感谢你。赏金是你的:D
【解决方案2】:

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

【讨论】:

  • 感谢您提供信息,但我没有使用 Mac。我只有在这个主题中遇到过类似的问题。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-16
    • 2015-09-22
    • 2010-10-11
    • 2013-11-04
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多