转自 处理老版PIL 到 pillow

帮新同事部署开发环境, 由于项目代码里用到了PIL库处理图片, 导致一些图片在浏览器中无法正常显示.  
几番折腾, 解决了问题, 这里记录一下报的问题, 及解决方法:

1. python版本不对, 64位的python不能装上,也不可能装得上32位的PIL, 所以先把PY换成32位版本, 这个是最先搞清楚的.没有异议.

2. 安装PIL官方编译的包之后, 会发生著名的: The _imagingft C module is not installed , 此时最好重新下一个:  
地址在  http://www.lfd.uci.edu/~gohlke/pythonlibs/   
这里是一些第三方组织编译的EXE包, 要下载对应PY版本的PIL, 重新安装, 最好下载Pillow, 它是对PIL的一些BUG修正后的编译版  
安装前,可以先 pip uninstall pil

3. 安装Pillow后, 可能还会发生KeyError的错误, 检查项目源码后发现是 Image 模块的save函数中 , 处理图片文件格式时报的错.  
不管是"JPEG", 还是"GIF", 都会报错, 解决的办法是:  
把项目源码中 import Image , 替换成 from PIL import Image 即可.  
按这个原理, 项目中所有用到 Image 模块的地方都应该替换掉.

另外, 可以在cmd console中测试 Image的SAVE字典,  
>>> import Image  
>>> Image.init()  
1  
>>> Image.SAVE.keys()  
['XBM', 'PCX', 'SPIDER', 'HDF5', 'TIFF', 'BUFR', 'EPS', 'JPEG', 'MSP', 'GRIB', '  
GIF', 'BMP', 'TGA', 'IM', 'PPM', 'PDF', 'FITS', 'PALM', 'WMF', 'PNG']

经过上面的测试后, 如果 Image.SAVE.keys() 输出为空,则说明没有找到 save format key, 在生成图片时就会报KeyError, 此时就需要把第一行改成: from PIL import Image

上一篇:收藏一个可以学习javascript prototype的链接


下一篇:spring boot 结合Redis 实现工具类