python2.6如何使用PIL

由于生产环境是centos6.5,开发环境为系统默认的python2.6.6且在内网,调用PIL时存在以下问题:

  1、在开发环境使用python2.6.6 的pip安装pillow包时会出现required = {'jpeg', 'zlib'}的依赖安装错误

  2、在开发环境使用python2.7的pip安装的pillow包可以在python2.7环境正常使用,但在python2.6.6环境不能正常使用

  3、使用PIL官网的2.6的zip源码包安装,可以正常安装,但使用会出现no _imaging c module错误

最终解决方案:

  1、开发可上网的python2.6.6环境下缓存python-imaging-1.1.6-19.el6.x86_64此包,拷贝至生产环境使用rpm安装即可

  开发环境使用yum紧下载方式缓存包:

  # yum install --downloadonly --downloaddir=abs_downpath python-imaging -y

  生产环境使用rpm安装:

  # rpm -ivh python-imaging-1.1.6-19.el6.x86_64.rpm

  2、开发可上网的python2.6.6环境下使用yum直接安装python-imaging此包,将产生的库文件拷贝至生产环境使用即可

  开发环境使用yum安装包并获取产生的库文件:

  # yum install python-imaging -y

  # rpm -ql python-imaging

  可以发现库文件在/usr/lib64/python2.6/site-packages/PIL目录

  rpm包和库文件可在百度云下载 https://pan.baidu.com/s/1Yb8r6rgeH5DIKwuK6mGdFw

图片处理要求:

  1、图片大于500K时缩放至500K内

  2、返回图片的二进制内容

结果代码:

 1 # coding: utf8
 2 import StringIO
 3 '''以PIL.Image.open(file)方法使用会报错'''
 4 from PIL import Image
 5 
 6 def imgResize(imgPath):
 7     '''
 8     入参:图片地址
 9     出参:小于500K的图片二进制内容
10     '''
11     img = Image.open(imgPath)
12     cache = StringIO.StringIO()
13     w,h = img.size
14     img.resize((w/2,h/2)).save(cache, 'JPEG')
15     timg = cache.getvalue()
16     if len(timg) > 500 * 1000:
17         return imgResize(timg)
18     else:
19         return timg

猜你喜欢

转载自www.cnblogs.com/elephanyu/p/9219179.html