Anaconda无法用PIL,我用Pillow替代

1 问题描述

我想利用文字生成图片信息,以方便运行 LATEX 的加载图片的demo。我自然想到了利用Python来执行这个任务,因为它是我使用过的众多编程语言中的最喜欢的语言之一,可以用爱不释手形容都不为之过。于是从网络搜到一个解决方案,将代码保存为genFig.py:

# -*- coding: utf-8 -*-
import os
import Image, ImageFont, ImageDraw

text = u"这是一段测试文本,test 123。"

im = Image.new("RGB", (300,50),(255,255,255))
dr = ImageDraw.Draw(im)
font = ImageFont.truetype(os.path.join("fonts","simsun.ttc"),18)

dr.text((10,5),text, font=font, fill="#000000")

im.show()
im.save("t.png")

于是接着在命令行中输入python genFig.py,给出错误提示:没有moduel image。我自然就想到了没安装该包,因为我使用的是Anaconda套件,亦即该套件没有安装包image。于是我就利用Anaconda安装python包的方法,采用命令conda install image,回复的是找不到该包。我判断PIL是一个整体,需要整体安装。于是我在pil网站找到了PIL的安装文件,如下图:
Anaconda无法用PIL,我用Pillow替代_第1张图片
这是一个exe文件,不受conda的托管。于是,按照通常Windows系统下软件的安装方法,就把其成功安装了,参见下面的图:
Anaconda无法用PIL,我用Pillow替代_第2张图片
Anaconda无法用PIL,我用Pillow替代_第3张图片

重新回到console中,运行程序genFig.py,如下图:
Anaconda无法用PIL,我用Pillow替代_第4张图片
可以看出,仍然出错。这里面肯定有什么原因,包的安装也不如Ubuntu中来的方便,安装后还是不能运行上述程序。我又利用import _imaging检查了一下,也没发现上面异常,如下图:
Anaconda无法用PIL,我用Pillow替代_第5张图片

带着小小的失望,我就继续在网络看别人对上述错误的解决方法是什么。

2 解决方法

在网络上搜索了一会,发现好多人在Ubuntu中也遇到相应的问题,因此给出的方案都是针对Unix或者Ubuntu下面的。但是,我在stackoverflow for c module is not installed页面上的一个不起眼的语句上发现了Pillow,如下图:
Anaconda无法用PIL,我用Pillow替代_第6张图片
我想Pillow也许是运行上节代码的替代方案。那就大胆地探索吧!

2.1 Pillow的安装

从pythonlibs网站找到Pillow的安装文件,如下图:
Anaconda无法用PIL,我用Pillow替代_第7张图片
将其下载到一个文件夹中,然后在该文件夹中启动console程序,在其中运行命令pip install Pillow-3.1.0-cp27-none-win32.whl安装,如下图:
Anaconda无法用PIL,我用Pillow替代_第8张图片
因为whl格式的文件需要采用pip程序来执行安装,这是模仿了Linux系统下面的包的安装方式。

2.2 将第1节代码变为Pillow下的库的使用

注意:要想使用Pillow库中的module (Image, ImageFont, ImageDraw etc.),需使用如下命令引入:

from PIL import Image, ImageFont, ImageDraw

于是,我们就将第1节代码改为:

# -*- coding: utf-8 -*-
import os
from PIL import Image, ImageFont, ImageDraw

text = u"这是一段测试文本,test 123。"

im = Image.new("RGB", (300,50),(255,255,255))
dr = ImageDraw.Draw(im)
font = ImageFont.truetype(os.path.join("fonts","simsun.ttc"),18)

dr.text((10,5),text, font=font, fill="#000000")

im.show()
im.save("t.png")

2.3 运行结果

然后再在命令行中执行经过修改后的2.2节中代码,可以看到执行成功,如下图:
这里写图片描述

3 总结

看来,PIL确实是一个好用的图形处理库。

你可能感兴趣的:(Python,工具学习)