中文文档,传送门
pip install pillow
1.引入库和打开图片,以及图片类的属性
from PIL import Image
im = Image.open("图片名称。JPG")
#打印IM 有以下三个东西
print(im.format,im.size, im.mode)
#分别是:图片源--如果不是文件读取的此项为None,图片大小,图片色彩模式
》》》JPEG (1080, 1080) RGB
- 缩略图,以及以特定格式保存图片
im.show()##低效的打开图片方式
im.thumbnail((128,128)) #指定图片大小,缩略图转换
im.save('1.jpg', "JPEG") #保存文件,后面的参数是存储格式
- 图片旋转45度并显示
im.rotate(45).show()
下面是生成验证码的一个例程
额外说明下:字体需要在系统盘搜索ttf文件,搜到后拖到项目目录下方便使用
import random
from PIL import Image, ImageFont, ImageDraw
def get_random_color():
return (random.randint(0,255),random.randint(0,255),random.randint(0,255))
def generate_image(length):
s='qwertyuioplkjhgfdsxcvbnm'
#新建画布
im=Image.new('RGB',(130,50),color=get_random_color())
#指定画笔字体,和字体大小
font=ImageFont.truetype('arial.ttf',size=30)
#创建画的对象
draw=ImageDraw.Draw(im)
# 绘制验证码
code='' #收集验证码,服务器需要拿到这个码和用户输入比对
for i in range(length):#一次循环画一个码,参数决定循环次数
c=random.choice(s) #在字符串S中抽取一个
code += c
draw.text((5+20*i,5),text = c,fill=get_random_color(),font=font) #(位置元祖,具体画什么,填充什么颜色,什么字体)
im.show()
generate_image(6)
上面例程的生成结果,类似这么个验证码
去例程函数里拿code的值可以知道验证码的内容。然后是展示和验证。这个验证码强度不高,但确实是个码凑合用用也没啥问题。要是觉得太好识别了,就在上边画线画点加滤镜啥的,反正用户只要不暴走随便你怎么搞。。。
比如绘制30条干扰线~~~~~~~~~~~~~~~~~~~
# 绘制30条干扰线
for i in range(30):
x1 = random.randint(0,130)
y1 = random.randint(0, 50/2)
x2 = random.randint(0, 130)
y2 = random.randint(50/2, 50)
draw.line( ( (x1,y1),(x2,y2) ) , fill=get_random_color() )
额 变这样~~~和平时有时候遇到的验证码差不多了~
或者这样的,每次都很惊喜~



