2

我试图端口一个Python程序从OS X到Windows 7 这个程序处理与Tkinter的 如PIL PNG在Windows ActiveState的7 ZLIB(PNG/ZIP)支持不可

self.logoImg = ImageTk.PhotoImage(Image.open('GrowthPathLogo.png')) 
一个PNG

代码失败 IOError:解压缩zip不可用

我试过用pypm安装pip。 然后我尝试用pip来构建它。 在构建过程结束时,它报告说不支持png/zlib

我在Windows上得到与python.org安装相同的错误。

我被卡住了,我不擅长建立C库。我也不知道pip是如何工作的。我安装了一个gnu zlib库,但它根本没有帮助。我安装了Visual C++ 2008 Express,至少这是可行的,因为pip确实能够成功编译。

回答

7

试试由Christoph Gohlke维护的版本here。要自己构建PIL,您需要使用自述文件中提到的几个库:libjpeg,zlib,freetype2和littleCMS。有关使用Visual C++或MinGW链接到zlib的说明,请参阅zlib125-dll.zip中的USAGE.txt。

+0

谢谢,我使用了你提到的二进制文件,它现在可以工作。 –

+1

这个二进制构建正是我所需要的。谢谢! –

5

我知道这是一个古老的问题,但我想给我的答案,以防人们遇到与我一样的问题。

Christoph Gohlke的作品在工作时非常棒。 但是,对于我的win7机器与python 2.7和最重要的是64位,没有预编译二进制PNG支持(zlib支持)。该页面上的Pillow 64位二进制文​​件在easy_install上失败,无法安装在我的机器上。

所以,如果你想解决这个问题,二进制文件不起作用,你需要用zlib支持来构建你自己的Pillow。要做到这一点,你需要下载最新的Pillow源码。 修改setup.py的ZLIB_ROOT行说:

ZLIB_ROOT = './zlib' 

现在,你必须建立Win64中位zlib的为好,这是棘手的部分。 从他们的网站下载最新的zlib源代码(我在1.2.5/1.2.8上测试过)。 打开64位视觉工作室命令提示符(非常重要) 我的命令提示符被称为VS2012 x64交叉工具命令提示符。

转到zlib的源代码目录,然后运行:

nmake -f win32/Makefile.msc 

如果它不工作的尝试:

nmake -f win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF" OBJA="inffasx64.obj gvmat64.obj inffas8664.obj" 

现在你应该在源目录中的以下文件:

zlib.h 
zconf.h 
zutil.h (not sure this is needed) 
zlib.lib 
zdll.lib 

将它们复制到Pillow源目录中,放入名为“zlib”的目录中 编译枕头使用"python setup.py build_ext -i" 使用安装枕头"python setup.py install"

枕头现在应该支持ZLIB(png)。 如果您有一些较旧的Pillow/PIL安装,您可能需要手动将_imaging.pyd和_imagingmath.pyd复制到python或虚拟环境的软件包安装文件夹中,以确保您拥有新编译的软件包。

你现在可以导入_imaging,你有png的支持。

您也可以用相同的方式添加Libjpeg,如果需要,手动编译它。

希望这可以帮助任何遇到此问题的人。

+0

谢谢你的努力!解决问题的唯一有用答案。 – renadeen