我正在尝试将一个python程序从OS X移植到Windows 7。 该程序使用tkinter处理png 例如
self.logoImg = ImageTk.PhotoImage(Image.open('GrowthPathLogo.png'))
代码失败了 IOError:解码器zip不可用
我尝试用pypm安装pip。 然后我尝试用pip构建它。 在构建过程结束时,它报告不支持png / zlib
我在Windows上安装了python.org时遇到了同样的错误。
我被困住了,我不擅长构建C库。我也不知道pip是如何工作的。我安装了一个gnu zlib库,但它根本没有帮助。我安装了Visual C ++ 2008 Express,至少可以正常工作,因为pip确实可以成功编译。
答案 0 :(得分:7)
尝试由Christoph Gohlke维护的构建here。要自己构建PIL,您需要在README中提到的几个库:libjpeg,zlib,freetype2和littleCMS。阅读zlib125-dll.zip中的USAGE.txt,了解有关使用Visual C ++或MinGW链接到zlib的说明。
答案 1 :(得分:5)
我知道这是一个古老的问题,但我想给出答案,以防人们遇到与我相同的问题。
Christoph Gohlke的作品在他们工作时非常棒。 但是对于我的带有python 2.7和最重要的64位的win7机器,没有预编译的二进制文件支持PNG(zlib支持)。该页面上的Pillow 64bit二进制文件在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源目录中,进入名为“zlib”的目录
使用"python setup.py build_ext -i"
编译枕头
使用"python setup.py install"
Pillow现在可以使用ZLIB(png)支持。 如果您安装了一些较旧的Pillow / PIL,则可能需要手动将_imaging.pyd和_imagingmath.pyd复制到python或虚拟环境的软件包安装文件夹中,以确保您拥有新编译的软件包。
您现在可以导入_imaging并获得png支持。
您也可以以相同的方式添加Libjpeg,如果需要,可以手动编译它。
希望这有助于遇到此问题的任何人。