python的第三方库PIL提供了对图片的相关的方法。今天通过制作一个验证码来介绍一下PIL库。
"""
new(mdoe,(width,height),color),mode是图片的模式,常用的有RGB,L(灰度模式),第2个参数是高度和宽度,color是背景色,可用rgb或者英文,返回一个图片对象
save(path) 将生成的图片保存到本地文件中,可以保存为jpg,png,jpeg和bmp。
""" pic1=img.new("RGB",(300,300),color="black")
pic.save(r".\image\new.jpg")
"""
使用resize()可实现对图片大小的改变
"""
width,height=pic.size print(width,height) width=width/2 height=height/2 pic.resize((width,height))
不想写了直接上最终的一个小程序----写一个生成验证码图片
“”“
验证码
”“”
from PIL import Image as img from PIL import ImageFont as imgf from PIL import ImageDraw as imgd from PIL import ImageFilter import random #创建一个画布 pic=img.new("RGB",(100,50),"white") #pic.show() #添加背景,使用point对每一个像素点设置颜色 draw=imgd.Draw(pic) for i in range(100): for j in range(50): r=random.randint(0,120) g=random.randint(0,120) b=random.randint(0,120) draw.point((i,j),fill=(r,g,b)) #pic.show() #添加滤镜,BLUE是对图片进行模糊处理 pic.filter(ImageFilter.BLUR) #添加字体,将字母和和数字保存在s中,通过随机生成下标来实现取值 s="aqwertyuiopasdfghklzxcvbnmQWERTYUIOPASDFGHJKLZXCBNM1234567890" s1="" for i in range(4): s1=s1+s[random.randint(0,len(s))] print(s1) #添加中文编码,中文在GBK编码中是0x4e00-0x9fa5,由于后面的汉字较为生僻,故我们使用前1000个左右的汉字 s2="" for i in range(4): s2+=chr(random.randint(0x4e00,0x4fff))#中文编码为ox4eoo-0x9fa5 #print(s2)
#使用truetype生成一个字体对象,包括字体的格式和大小,字体格式可在“C:\Windows\Fonts\”中查看 font=imgf.truetype("C:\Windows\Fonts\STXINGKA.TTF",20)
#Draw相当于胶水,把字体粘贴到图片上,使用Draw()将图片传入,使用text将字体传入,实现粘贴 ,draw=imgd.Draw(pic) draw.text((0,0),s2,"blue",font) pic.show()