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