您的位置:首页 > 编程语言 > Python开发

Python: Window 64位 Python 使用PIL && 验证码生成

2015-09-01 22:30 841 查看
今天看公共主页上有个 文字转图片的消息,挺有意思, 里面使用了
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');


结果图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PIL Python