使用Python的pillow库实现简易数字验证码

python环境的安装与配置等我有时间再写趴,今天学的内容主要还是一个了解入门的阶段,就当了解一下python的PIL库趴,废话不多说直接上代码!


代码

#导入PIL和random库
from PIL import ImageDraw,Image,ImageFont,ImageFilter
from random import randint

#创建空白图片
image1=Image.new('RGB',(240,120),(120,130,140))

#创建图像对象
draw1=ImageDraw.Draw(image1)

#创建背景板(主要是利用point随机写点的颜色,最后效果如图1)
for x in range(240):
    for y in range(120):
        r =randint(0, 255)
        g =randint(0,255)
        b = randint(0, 255)
        draw1.point((x,y),(r,g,b))
        
#创建字体
font1=ImageFont.truetype('fonts/aa.ttf',50)
#随机写入数字利用randint
for x in range(5):
    y = randint(10,50)
    r = randint(0, 255)
    g = randint(0, 255)
    b = randint(0, 255)
    num=str(randint(0,9))
    draw1.text((x*50,y),num,(r,g,b),font1)

#图像滤镜效果
image1.filter(ImageFilter.BLUR)

#将图片进行展示
image1.show()
#最后效果如图2

图1
图2


PIL库

1.加载图片
# 1)加载图片,返回图片对象
# 图片地址可以是写绝对路径,也可以写相对路径
图片对象 = Image.open(图片地址)

# 2)显示图片
图片对象.show()		
2.使用滤镜
image1.filter(滤镜效果)
"""
滤镜效果:
ImageFilter.EMBOSS   -  浮雕效果
ImageFilter.FIND_EDGES - 泼墨效果
ImageFilter.SHARPEN  -  锐化滤波
ImageFilter.SMOOTH  -  平滑滤波
ImageFilter.EDGE_ENHANCE_MORE - 边界增强滤波(程度更深)
ImageFilter.EDGE_ENHANCE - 边界增强滤波
ImageFilter.DETAIL - 细节滤波
ImageFilter.CONTOUR - 轮廓滤波(铅笔画)
ImageFilter.BLUR - 模     糊滤波
"""
3.图片的剪切
图片对象.crop(范围)
范围: (起点x坐标,起点y坐标, 终点x坐标,终点y坐标)
4.粘贴
图片对象1.paste(图片对象2,(x坐标,y坐标))
5.镜像
图片对象.transpose(对称方式)
# Image.FLIP_LEFT_RIGHT - 左右镜像
# Image.FLIP_TOP_BOTTOM - 上下镜像
6.缩放
图片对象.thumbnail((宽度, 高度))  - 自动按比例缩放
7.创建空白图片
Image.new(模式,图片大小, 背景颜色)
image1 = Image.new('RGB', (1000, 1000), (0, 255, 255))
8.文字水印
# 1.创建一个空的图片
Image.new(模式,图片大小,背景颜色)#该模式即位RGB和RGBA
# 2.创建draw对象
draw1=ImageDraw.Draw(图片对象)
# 3.创建font对象
font1=ImageFont.truetype(字体文件,字体大小)
# 4.画文字
draw1.text(坐标,文字,文字颜色,字体对象)
9.颜色点
# 1.创建一个图片对象(可以是空图片,也可以是已经存在的图片)
# 2.创建Draw对象
draw1=ImageDraw.Draw(图片对象)
# 3.设置点颜色
Draw1.point(坐标,颜色)
*10. 带透明度的图片粘贴
from PIL import Image

layer1 = Image.open(背景图片地址).convert('RGBA')
layer2 = Image.open(带透明度的小图片的地址)
final1 = Image.new('RGBA', layer1.size, (255, 255, 0, 255))
final1 = Image.alpha_composite(final1, layer1)

final2 = Image.new('RGBA', layer1.size, (255,255,0,0))
final2.paste(layer2, (贴的位置的x坐标, 贴的位置的y坐标))
final1 = Image.alpha_composite(final1, final2)
final1.show()
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值