生成图片验证码和对图片的简单处理

本文介绍了如何在PyCharm中利用PIL库进行图片处理,包括缩放图片和实现照片模糊效果。在进行操作前,需要通过`pip install pillow`安装PIL库,避免直接使用`pip install PIL`导致解释器问题。
摘要由CSDN通过智能技术生成
验证码的长度可以根据参数进行调整,这个生成的是纯字母的验证码。生成字母和数字混合的验证码只需将
source = string.ascii_letters改成source = string.ascii_letters+string.digits
import random
import string
from PIL import Image, ImageDraw, ImageFont, ImageFilter
# font_path = '/opt/WebStorm-172.3544.34/jre64/lib/fonts/DroidSans-Bold.ttf'
font_path = '/opt/WebStorm-172.3544.34/jre64/lib/fonts/' \
            'DroidSansMonoSlashed.ttf'  # 字体的位置,不同版本的系统会有不同
number = 4  # 生成几位数的验证码
size = (100, 30)  # 生成验证码图片的高度和宽度
bgcolor = (255,250,240)  # 背景颜色,默认为白色
fontcolor = (190,190,190)  # 字体颜色,默认为蓝色
linecolor = (255, 0, 0)  # 干扰线颜色。默认为红色
draw_line = True  # 是否要加入干扰线
line_number = (1, 5)  # 加入干扰线条数的上下限
def gene_text():  # 用来随机生成一个字符串
    source = string.ascii_letters
    return ''.join(random.sample(source, number))  # number是生成验证码的位数
def gene_line(draw, width, height):  # 用来绘制干扰线
    begin = (random.randint(0, width), random.randint(0, height))
    end = (random.randint(0, width), random.randint(0, height))
    draw.line([begin, end], fill=linecolor)
def gene_code():  # 生成验证码
    width, height = size  # 宽和高
    image = Image.new('RGBA', (width, height), bgcolor)  # 创建图片
    font = ImageFont.truetype(font_path, 25)  # 验证码的字体
    draw = ImageDraw.Draw(image)  # 创建画笔
    text = gene_text()  # 生成字符串
    font_width, font_height = font.getsize(text)
    draw.text(((width - font_width) / number, (height - font_height) / number), text,
              font=font, fill=fontcolor)  # 填充字符串
    if draw_line:
        gene_line(draw, width, height)
    # image = image.transform((width+30,height+10), Image.AFFINE, (1,-0.3,0,-0.1,1,0),Image.BILINEAR)  #创建扭曲
    # image = image.transform((width + 20, height + 10), Image.AFFINE, (1, -0.3, 0, -0.1, 1, 0), Image.BILINEAR)  # 创建扭曲
    image = image.filter(ImageFilter.EDGE_ENHANCE_MORE)  # 滤镜,边界加强
    image.save('idencode1.png')  # 保存验证码图片
    return image, text

if __name__ == "__main__":
    gene_code()

缩放图片

进行缩放照片时,需要在pycharm中导入PIL,在虚拟环境中运行命令为 pip install pillow,然后再进行操作。

不能直接使用pip install PIL,这样会导致解释器降级。

from PIL import  Image
im = Image.open('base.jpg')  # 1 打开文件, 返回一个文件对象;
width, height = im.size  # 2. 获取已有图片的尺寸;
im.thumbnail((width/2, height/2))  #3. 缩小图片50%,反之放大;
im.save('small.png', 'png')  # 4.把缩放的图片保存;

模糊照片

from PIL import Image, ImageFilter
im = Image.open('base.jpg')  # 1 打开文件, 返回一个文件对象;
im2 = im.filter(ImageFilter.BLUR)  # 2. 对图片进行模糊效果;
im2.save('unclear.png', 'png')  # 4.把模糊的图片保存;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值