PIL 中的 PNG 显示在 OS X Mavericks 上损坏?

2024-01-12

我注意到 PNG 图像不会在 OS X Mavericks 中使用 ImageTk.PhotoImage 的 Tkinter 应用程序中显示。但是,GIF 和 JPEG 显示效果良好。没有打印错误或抛出异常,并且调试代码显示图像已读取并且具有正确的高度和宽度。这是一个简化的示例:

import Tkinter
from PIL import Image, ImageTk

logo_file = 'test.png'
#logo_file = 'test.gif'


class Application(Tkinter.Frame):
    def __init__(self, master):
        Tkinter.Frame.__init__(self, master)
        self.master.minsize(width=512, height=256)
        self.master.config()

        self.pack()

        self.main_frame = Tkinter.Frame()
        self.some_image = ImageTk.PhotoImage(Image.open(logo_file))

        some_label = Tkinter.Label(self.main_frame, image=self.some_image)
        some_label.config()
        some_label.pack(side='top')

        self.main_frame.place(in_=self.master, anchor='c', relx=.5, rely=.5)

root = Tkinter.Tk()
app = Application(root)
app.mainloop()

如果您使用 GIF,则会显示图像,但使用 PNG 则不会显示。再说一次,这只发生在 OS X Mavericks 上,Mountain Lion 工作得很好。我尝试重新安装(编译 PIL)但没有成功,并尝试了新的 virtualenv。

创建/保存 PNG 时是否需要正确设置某些 PNG 属性?或者这是 PIL 或 Tkinter 或 OS X 中的错误?

更新以添加一些细节

我在用着:

  • Python 2.7.5 (/usr/bin/python)
  • PIL 1.1.7(使用pip编译)

这是在一台刚刚从 Mountain Lion 更新到 Mavericks 的机器上,之前安装了 PIL,而且我没有弄乱 Apple 附带的 Python 系统。

更新 2 枕头设置摘要

我安装了 Pillow 2.2.1,它说它支持 PNG:

--------------------------------------------------------------------
PIL SETUP SUMMARY
--------------------------------------------------------------------
version      Pillow 2.2.1
platform     darwin 2.7.5 (default, Aug 25 2013, 00:04:04)
             [GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)]
--------------------------------------------------------------------
--- TKINTER support available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- TIFF G3/G4 (experimental) support available
--- FREETYPE2 support available
*** LITTLECMS support not available
*** WEBP support not available
*** WEBPMUX support not available
--------------------------------------------------------------------

我还使用brew(libpng 1.5.14)卸载并重新安装了libpng。然后我重新安装了 Pillow 以确保它是用它构建的,尽管我认为它使用了 zlib。

Update 3 尝试构建 Python 2.7.5

也许问题出在 zlib 上,尝试编译 Python 2.7.5 我得到这个:

Python build finished, but the necessary bits to build these modules were not found:
_bsddb             _sqlite3           _ssl             
bsddb185           dbm                dl               
gdbm               imageop         linuxaudiodev    
nis                ossaudiodev        readline        
spwd               sunaudiodev        zlib
To find the necessary bits, look in setup.py in detect_modules() for the module's name.


Failed to build these modules:
_tkinter

我认为你的问题是你的 PIL 是在 Mavericks 机器上构建的,没有 PNG 支持,或者只有部分 PNG 支持。

如果 PIL 在它想要的地方找不到 libpng 和 libz,则您将无法获得完整的 PNG 支持。而从山狮升级到小牛之后,这似乎有时会成为一个问题。

This may与您遇到的问题不同。例如,这可能是由于 Apple 再次使用了有缺陷的 Tcl/Tk 版本(就像他们在 Snow Leopard 中臭名昭著的那样)。但这绝对值得尝试。

With Pillow https://pypi.python.org/pypi/Pillow,以及旧式 PIL 的某些版本(但实际上,如果您不使用 Pillow,您几乎肯定应该使用),安装过程的最后会为您提供一个友好的“PIL 设置摘要”部分,其中向您显示所有重要的信息配置的东西。

我在本地构建的 Python 3.3.2 上使用 Pillow 2.2.1 时遇到了完全相同的问题。我通过使用解决了它Homebrew http://brew.sh安装 libpng,然后重建 Pillow:

$ brew install libpng
$ pip-3.3 uninstall pillow
$ pip-3.3 install pillow
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PIL 中的 PNG 显示在 OS X Mavericks 上损坏? 的相关文章

随机推荐

  • 为什么我无法在 Swift iOS 应用程序中使用 CIFilter 将图像反转回原始图像

    我正在开发一个简单的应用程序 它有一个带有预加载图像和按钮的图像视图 按下按钮时 图像视图中的图像应反转 它第一次工作 但我希望当我再次按下按钮时它会将图像反转回其原始形式 然而 第二次按下按钮时它崩溃了 这是相关代码ViewControl
  • 为什么Swift标准库中的reverse()函数返回Reverse RandomAccessCollection?

    现在我已经学习了 Swift 达到了合理的水平 我正在尝试掌握标准库 但实际上它对我来说主要是 所以一个具体的问题 我有一个字符串数组 我可以对其调用reverse let arr Mykonos Rhodes Naxos reverse
  • 如何向 hline 添加图例?

    我想在 hline 图中添加一个图例 我的子集的头看起来像这样 Site Date Al 1 Bo6 2014 10 07 152 1 2 Bo1 2014 10 07 157 3 3 Bo3 2014 10 07 207 1 4 Bo4
  • 如何在 python pyqtgraph PlotWidget 中设置刻度标签

    我正在尝试绘制每天几个小时的时间序列 每天之间没有空白时间 如果我使用 pg GraphicsWindow 则效果很好 刻度标签为 9 00 10 00 17 00 如果我使用 pg PlotWidget 或 pg PlotWindow A
  • Python 最佳实践 - 在哪里存储 API 密钥/令牌

    我正在构建一个使用 API 令牌和密钥来访问服务的系统 但存储它们的最佳位置在哪里 我想将代码推送到 GitHub 而不推送令牌 目前 我已将它们放在一个名为的空白文件中Constants py并且 在主 python 文件中 我导入Con
  • 将剪辑路径位置移动到鼠标光标

    我有一个 SVG 形状 用作clip path在图像顶部 SVG 形状应遵循鼠标的位置 如果我使用的话我可以让它工作clip path circle 但如果使用则不然clip path url idOfMask 就像我在使用 SVG 作为剪
  • 如何使用 PHP 将 Word 文档转换为 XML?

    我想将 Word 文档 doc 和 docx 转换为 XML 我如何使用 PHP 来做到这一点 完成此操作后 我必须在该 XML 文件中添加一些数据 有人可以帮我吗 Word 文档 docx 是一个xml文件 只需解压即可
  • 无法从字符串中删除“空字符”

    我问过类似的question https stackoverflow com questions 17580662 how to read a text file that contains null character in delphi
  • 模板中的模板输入和模板引用变量

    我们使用 let 关键字创建模板输入变量 同时使用 var 创建模板引用变量 其中 var 是变量的名称 我们可以在模板中的任何位置引用模板引用变量 模板输入变量的范围怎么样 它与模板引用变量的范围有何不同 有人可以通过例子帮助我理解吗 d
  • 反应本机状态不更新

    我感觉我快要疯了 我在搜索栏中输入 x 但是this setState filter text 没有更新状态 console log this state filter 给我一个值 它的初始值在构造函数中设置 我可以看到文本变量的值为 x
  • 如何在 Python 绘图程序中使用多点触控?

    我正在Python中构建一个简单的绘画程序作为一个项目 使用Pygame 它的工作原理是 当按下鼠标并在表面上拖动它时 它基本上会绘制一系列圆圈 它还有其他一些小事情发生 但事情我想问的是 有没有一种方法可以将您知道的 mouse get
  • Python:获取正则表达式匹配的文本

    我在 Python 中有一个正则表达式匹配对象 我想获取它匹配的文本 说如果模式是 1 3 搜索字符串是 abc123xyz 我想得到 123 我怎样才能做到这一点 我知道我可以使用match string match start matc
  • 仅当设置另一个属性时才需要某个属性

    是否可以做一个属性required如果设置了另一个属性 例如 在下面的代码中 viewId必须制作属性required iff action属性已设置 XML
  • 在 OpenMP 中计算矩阵的条目

    我对 openMP 很陌生 但我正在尝试编写一个简单的程序来并行生成矩阵的条目 即对于 N M 矩阵 A 令 A i j i j 下面包含一个最小的示例 include
  • 任务 - 属性分配

    最初 我有以下内容 foreach Product product in products product ImageUri imageClient GetImageUri product GetImagePath 我想做的是并行处理所有产
  • 诗歌如何知道我的包位于 src 文件夹中?

    我有一个简单的问题 我曾经用我的包在根目录下创建一个诗歌项目 project toml mypackage init py mypackage py test mypackage py 我最近将测试移到了另一个目录中 因此该文件夹现在看起来
  • 赋值使指针无需强制转换

    我正在编辑一个快速排序代码 以便低 高和中的值指向数组元素而不是整数 这是我的代码 include
  • 通过http上传时Android图像损坏

    当我将图像从 Android 设备 v 2 2 上传到服务器 带有 php 的 apache 时 基本上 有与这里相同的问题 Android开发图片上传损坏 https stackoverflow com questions 3154224
  • 创建包含多个 HTTP 请求的 mime/multipart 请求

    我正在关注this http blogs msdn com b webdev archive 2013 11 01 introducing batch support in web api and web api odata aspx使用
  • PIL 中的 PNG 显示在 OS X Mavericks 上损坏?

    我注意到 PNG 图像不会在 OS X Mavericks 中使用 ImageTk PhotoImage 的 Tkinter 应用程序中显示 但是 GIF 和 JPEG 显示效果良好 没有打印错误或抛出异常 并且调试代码显示图像已读取并且具