• 制作简单图片验证码


    一、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:WindowsFonts下,复制喜欢的字体到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()
  • 相关阅读:
    软件工程第一次结对作业
    软件工程第二次作业
    vue之vuex
    ceshi
    第3次 结构与部分
    第二次作业
    获得领跑衫感言
    期末总结
    第十四,十五周作业
    第七周作业
  • 原文地址:https://www.cnblogs.com/zhengyuli/p/10848280.html
Copyright © 2020-2023  润新知