验证码源码:

def v_code(request):from PIL import Image, ImageDraw, ImageFontimport random# 定义一个生成随机颜色的函数def get_color():return random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)# 生成一个图片对象img_obj = Image.new("RGB",(250, 35),color=get_color())# 在图片中加文字# 生成一个画笔对象draw_obj = ImageDraw.Draw(img_obj)# 加载字体文字font_obj = ImageFont.truetype("static/font/kumo.ttf", size=28)# for 循环5次,每次写一个随机字符tmp_list = []for i in range(5):n = str(random.randint(0, 9))  # 生成一个随机数字l = chr(random.randint(97, 122))  # 生成一个随机小写字母u = chr(random.randint(65, 90))  # 生成一个随机大写字母r = random.choice([n, l, u])  # 随机选取tmp_list.append(r)  # 存入列表 为下面加入session做准备
        draw_obj.text((i * 48 + 20, 0),  # 位置r,  # 内容get_color(),  # 颜色font=font_obj  # 字体
        )# 拿到随机验证码 拼接成字符串 存入sessionv_code_str = "".join(tmp_list)request.session["v_code"] = v_code_str.upper()# 加干扰线# width = 250  # 图片宽度(防止越界)# height = 35# for i in range(2):#     x1 = random.randint(0, width)#     x2 = random.randint(0, width)#     y1 = random.randint(0, height)#     y2 = random.randint(0, height)#     draw_obj.line((x1, y1, x2, y2), fill=get_color())#
    # # 加干扰点# for i in range(2):#     draw_obj.point([random.randint(0, width), random.randint(0, height)], fill=get_color())#     x = random.randint(0, width)#     y = random.randint(0, height)#     draw_obj.arc((x, y, x+4, y+4), 0, 90, fill=get_color())# 第一版: 将生成的图片保存到文件中# with open("xx.png", "wb") as f:#     img_obj.save(f, "png")# print("图片已经生成!")# with open("xx.png", "rb") as f:#     return HttpResponse(data, content_type="image/png")# 第二版 直接将图片保存在内存中from io import BytesIOtmp = BytesIO()  # 生成一个io 对象img_obj.save(tmp, "png")data = tmp.getvalue()return HttpResponse(data, content_type="image/png")

View Code

转载于:https://www.cnblogs.com/yangwei666/p/9283975.html

pillow模块 (PIL) 生成验证码相关推荐

  1. 成功解决pillow模块内生成的非UTF-8格式(比如label中有汉字时)

    成功解决pillow模块内生成的非UTF-8格式(比如label中有汉字时) 目录 解决问题 解决方法 解决问题 解决pillow模块内生成的非UTF-8格式(比如label中有汉字时),需要进行格式 ...

  2. python验证码,python将PIL生成的图片进行base64编码并返回给前端浏览器

    我用python的PIL生成了验证码图片,需要将图片返回给前端浏览器,有两种返回方式.一种是返回response,另一种是将图片进行base64编码后返回. 注意:PIL生成验证码图片时,需要传入fo ...

  3. python怎么卸载pillow_Python3安装Pillow与PIL的方法

    Python3安装Pillow与PIL的方法 关于Pillow与PIL PIL(Python Imaging Library)是Python一个强大方便的图像处理库,名气也比较大.不过只支持到Pyth ...

  4. Django 生成验证码或二维码 pillow模块

    一.安装PIL PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了.PIL功能非常强大,API也非常简单易用.   PIL模块只支持到Python 2 ...

  5. python 基于pillow模块生成随机图片验证码教程

    效果图 我们先来看一下大致的效果图. 以上图形都是用非常基础的元素随机构成的:点,线,曲线,文本.而pillow模块远远不止这些功能,如果学好了它,真的就是你想怎么花就怎么花. 那么现在我们就去学习一 ...

  6. Python图片处理PIL/pillow/生成验证码/出现KeyError: 和The _imagingft C module is not installed...

    近期在用Python开发自己的博客.须要用到Python生成验证码,当然肯定要用到Python的图形处理库PIL,由于我用的是windows. 所以在安装好pil之后就開始写,就依照题目所说出现了Th ...

  7. PIL应用之生成验证码图片

    PIL应用之生成验证码图片 - 残阳似血的博客 PIL应用之生成验证码图片 位于分类 我爱Python 现在的网页中,为了防止机器人提交表单,图片验证码是很常见的应对手段之一.这里就不详细介绍了,相信 ...

  8. pil库修改图片大小_Gvcode库:一个更简单的、华人开源的、自动生成验证码的python库...

    1 说明: ===== 1.1 gvcode全称:graphic-verification-code. 1.2 基本介绍,一秒搞懂. 1.3 并对源码进行修改一个小bug,教您如何修改源码,解决bug ...

  9. Python图片处理模块PIL(pillow)

    Python图片处理模块PIL(pillow) 本篇包含:一.Image类的属性:1.Format   2.Mode   3.Size    4.Palette    5.Info           ...

最新文章

  1. 新冠图像数据分析论文集合(附链接)
  2. 解决安装完ubuntu登陆无root账户问题
  3. Py之playsound:playsound的简介、安装、使用方法之详细攻略
  4. 奇怪吸引子---LuChen
  5. c语言程序设计第二版李学刚,C语言程序设计(第2版)李学刚教学资源教学课件2-7 动态变量.pptx...
  6. 【iVX 初级工程师培训教程 10篇文拿证】04 画布及我和 iVX 合照
  7. matlab功能块,Matlab GUI重用功能块
  8. How do you simple use git repository
  9. mysql高频面试题合集
  10. iOS开发app打包
  11. 手机信号强度大小的意义
  12. python爬京东延迟加载_python大规模爬取京东
  13. 中美跨境电商贸易投资云洽会成功举办;TT Shop和TTforBusiness将互通;PhonePe月破20亿...|洞悉跨境
  14. 权限管理需要哪几张表
  15. 机器学习-常用回归算法归纳(全网之最)
  16. 把 14 亿人都拉到一个微信群,在技术上能实现吗?
  17. [体感游戏]关于体感游戏的一些思考(七) --- “我是泰山,你是简?”
  18. 电路模型和电路定律(Ⅲ)
  19. 并口st7789v2_3.2寸240*320,ST7789V,8080 8//16位MCU并口3/4SPI+16/18 bit RGB ,全彩液晶显示模块...
  20. linux系统--文件目录

热门文章

  1. JAVA框架--hibernate、struts2、spring
  2. minio 搭建blob
  3. 0113——代理模式
  4. UIPikerView的属性和使用方法
  5. [转载]与索引相关的概念---聚簇因子
  6. 动态加载网上或者本地场景的后续
  7. MFC工作笔记0010---PeekMessage 详解
  8. error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int错误的解决方法
  9. parseInt 的使用方式,基数表达
  10. 发现个特别合胃口的仓鼠、小鱼和计数器代码