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的安装文件,如下图:
这是一个exe文件,不受conda的托管。于是,按照通常Windows系统下软件的安装方法,就把其成功安装了,参见下面的图:
重新回到console中,运行程序genFig.py,如下图:
可以看出,仍然出错。这里面肯定有什么原因,包的安装也不如Ubuntu中来的方便,安装后还是不能运行上述程序。我又利用import _imaging
检查了一下,也没发现上面异常,如下图:
带着小小的失望,我就继续在网络看别人对上述错误的解决方法是什么。
2 解决方法
在网络上搜索了一会,发现好多人在Ubuntu中也遇到相应的问题,因此给出的方案都是针对Unix或者Ubuntu下面的。但是,我在stackoverflow for c module is not installed页面上的一个不起眼的语句上发现了Pillow,如下图:
我想Pillow也许是运行上节代码的替代方案。那就大胆地探索吧!
2.1 Pillow的安装
从pythonlibs网站找到Pillow的安装文件,如下图:
将其下载到一个文件夹中,然后在该文件夹中启动console程序,在其中运行命令pip install Pillow-3.1.0-cp27-none-win32.whl
安装,如下图:
因为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确实是一个好用的图形处理库。