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

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

结果图:

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值