ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

制作简单图片验证码

2019-05-11 12:50:41  阅读:139  来源: 互联网

标签:font randint image random 验证码 im 255 制作 图片


一、PIL库基本操作

from PIL import Image,ImageFilter  #安装方法 pip install pillow

image_file =Image.open('pikaqiu.jpg')
image_file = image_file.convert('1')  #更改图像模式
image_file.show()   #打开图片,显示图片
image_file.save('qiuqi2.jpg')     #改名+另存为

#图片缩放
im=Image.open('pikaqiu.jpg')
#获取尺寸
w,h =im.size
print(w,h)
# im.thumbnail((w//2,h//2))

im=im.filter(ImageFilter.BLUR)  #图片模糊处理
im.show()

二、开始制作验证码

from PIL import Image,ImageFilter,ImageFont,ImageDraw   #ImageFont 导入字体颜色  ImageDraw新建绘图对象
import random
import string



#随机字母
def rndChar():
    return chr(random.randint(65,90))  #整数对应的ascii码A-Z的范围

#随机字母和数字
def getrandl(num,many):   #num 代表位数  ,many 代表个数
    for x in range(many):
        s=''
        for i in range(num):
            n = random.randint(1,2) #n=1 生成数字 n =2 生成字母
            if n ==1:
                numb =random.randint(0,9)
                s += str(numb)
            else:
                s+=str(random.choice(string.ascii_letters))

    return s

#随机生成RGB值
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  #图像宽度  *4是四个字母
height =60

image=Image.new('RGB',(width,height),(255,255,255))#最后的元组是RGB每个的值
# font =ImageFont.truetype('Monaco.ttf',36)  #指定字体和大小   font =ImageFont.truetype('Monaco.ttf',36)报错显示没有找到这个字体
#解决方法:到C:\Windows\Fonts下,复制喜欢的字体到py文件下
font =ImageFont.truetype('tahoma.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),getrandl(1,4),font=font,fill=rndColor2())   #60*x+10是写第一个字母起笔位置为从左往右10长度,10是从上往下的高度,这样开始写第一个 字母

#加上模糊处理
image=image.filter(ImageFilter.BLUR)

image.show()

 

标签:font,randint,image,random,验证码,im,255,制作,图片
来源: https://www.cnblogs.com/zhengyuli/p/10848280.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有