PIL库编译备忘录

来源:互联网 发布:fifa online3叶子软件 编辑:程序博客网 时间:2024/04/29 09:13

Python Version:2.7.6

PIL Version:1.1.7

Zlib Version: 1.2.8



PIL库在编译前可通过Setup.py为其添加一些额外特性,以支持更多的功能。

1.17版中支持的特性有5种,分别是zlib、tcl、jpeg、freetype、lcms。



下面以为PIL添加zlib支持为例说明具体的添加步骤。


1、在Setup.py中有个定义在文件首部的变量:ZLIB_ROOT,其指向zlib库的zlib.lib库文件跟.h文件的目录。

ZLIB_ROOT默认值为None,也就是说PIL默认是没有zlib支持的。



2、为了得到zlib库文件和头文件,需要编译zlib库,以下编译步骤适用于在32位机器上使用VS2008编译Zlib-1.2.8。

2.1、下载Zlib源码,解压至一目录,例如:E:\zlib-1.2.8。

2.2、运行E:\zlib-1.2.8\contrib\masmx86\bld_ml32.bat,编译下面步骤需要用到的一些.obj。

2.3、使用VS2008打开E:\zlib-1.2.8\contrib\vstudio\vc9下的VS解决方案文件zlibvc.sln。

2.4、将当前解决翻案的编译配置修改为Relase。

2.5、右键zlibstat工程,打开属性页,在配置属性->C/C++->预处理器->预处理器定义中去掉ZLIB_WINAPI。这么做的原因是ZLIB_WINAPI宏定义了Zlib库使用WINAPI来封装所有的接口,这将导致链接生成PIL库时无法链接zlibstat.lib,出现找不到函数的错误。

2.6、右键解决方案,重新生成解决方案。

2.7、在E:\zlib-1.2.8\contrib\vstudio\vc9\x86\ZlibStatRelease目录中找到上步生成的Zlib静态库文件zlibstat.lib,改名成zlib.lib后复制到E:\zlib-1.2.8,此目录下包含了Zlib的所有头文件。


3、打开PIL源码目录下的setup.py,修改其中的ZLIB_ROOT变量值,令其指向zlib库文件与头文件的位置,例如:

ZLIB_ROOT = 'E:\\zlib-1.2.8。'


4、在PIL源码目录下运行python setup.py build --force编译PIL。后面的--force选项表示强制编译,覆盖之前的编译结果。


5、运行python setup.py install --force进行安装。


6、使用如下代码测试由Zlib支持的PIL:

[python] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. import Image 
  2. im = Image.open('test.png'
  3. im.show() 

如果没有出现异常:“IOError: decoder zip not available”,则表明Zlib特性添加成功。
0 0
原创粉丝点击