使用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

使用Python的pillow库实现简易数字验证码_第1张图片
使用Python的pillow库实现简易数字验证码_第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()

你可能感兴趣的:(Python入门,python)