一、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()