今天看公共主页上有个 文字转图片的消息,挺有意思, 里面使用了PIL
库, 就想试试。结果安装PIL
就遇到了不少问题QAQ.
问题
使用easy_install
或者pip
安装好PIL
之后,用下面代码测试:
import Image
# 打开图像文件
im = Image.open('test.jpg')
# 获得图像尺寸:
w, h = im.size
# 缩放到50%:
im.thumbnail((w//2, h//2))
# 把缩放后的图像用jpeg格式保存:
im.save('res.jpg', 'jpeg')
结果报以下错误:
exceptions.IOError: decoder jpeg not available
在网上查了查,不过大部分都是在Linux
下的,只需要重新编译一个libjpeg
下载了之后,挺麻烦的还是不行–后来有的博客上直接说:
64位的python不能装上,也不可能装得上32位的PIL, 所以先把PY换成32位版本, 这个是最先搞清楚的.没有异议.
具体对错不太了解—
解决方法
使用PILLOW
代替PIL
重新安装PILLOW
即可。
在原先代码里面的,import Image
等直接改为from PIL import Image
就可以了。
附:产生英文验证码代码
from PIL import Image, ImageFilter, ImageDraw, ImageFont
import random
def rndChar():
return chr(random.randint(65,90))
def rndColor():
return (random.randint(64,255),random.randint(64,255),random.randint(64,255))
def rndColor2():
return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))
width = 60*4
height = 60
image = Image.new('RGB', (width, height), (255,255,255))
font = ImageFont.truetype('C:\\Windows\\Fonts\\Arial.ttf', 36)
draw = ImageDraw.Draw(image)
for x in range(width):
for y in range(height):
draw.point((x,y), fill=rndColor())
for t in range(4):
draw.text((60*t +10,10), rndChar(), font=font, fill=rndColor2())
image = image.filter(ImageFilter.BLUR)
image.show()
image.save('code.jpg', 'jpeg');
结果图: