Windows 7 ZLIB(PNG / ZIP)支持不可用

我试图从OS X移植到Windows 7的python程序。这个程序处理与Tkinter例如PNG

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

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

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

我在Windows上安装python.org时遇到同样的错误。

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

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

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

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

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

 ZLIB_ROOT = './zlib' 

现在你必须为win64位构建zlib,这是一个棘手的部分。 从他们的网站下载最新的zlib源码(我在1.2.5 / 1.2.8上测试过)。 打开Visual Studio命令提示符为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源代码目录中,使用"python setup.py build_ext -i"将其编译到“zlib”编译枕头的目录中。使用"python setup.py build_ext -i"安装Pillow

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

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

你也可以用同样的方法添加Libjpeg,如果需要的话手动编译。

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