1.安装pillow模块

  1. pip install pillow

  (1)创建图片

  1. from PIL import Image
  2.  
  3. #定义使用Image类实例化一个长为400px,宽为400px,基于RGB的(255,255,255)颜色的图片
  4. img1=Image.new(mode="RGB",size=(400,400),color=(255,255,255))
  5.  
  6. #把生成的图片保存为"pic.png"格式
  7. with open("pic.png","wb") as f:
  8. img1.save(f,format="png")
  9.  
  10. #显示图片
  11. img1.show()

  运行程序,程序会在py文件的同级下生成一个名为"pic.png"的小图片,图片长为400px,宽为400px,颜色为白色

(2)创建笔画

  1. #创建画笔,用于在图片上生成内容
  2. draw1=ImageDraw.Draw(img1,mode="RGB")
  3. 3.在图片上生成点
  4.  
  5. #在(100,100)坐标上生成一个红点,指定的坐标不能超过图片的尺寸
  6. draw1.point([100,100],pill="red")
  7. #在(80,80)坐标上生成一个黑点,指定的坐标不能超过图片的尺寸
  8. draw1.point([80,80],fill=(0,0,0))
  9. 4.在图片上画线
  10.  
  11. #第一个括号里面的参数是坐标,前两个数为开始坐标,后两个数为结束坐标
  12. #括号里的第二个参数指定颜色,可以直接指定,也可以用RGB来表示颜色
  13. draw1.line((100,100,100,300),fill="red")
  14. draw1.line((100,200,200,100),fill="blue")
  15. 运行程序,画笔会在(100,100)到(100,300)坐标之间画一条红色的竖线,在(100,200)到(200,100)坐标之间画一根蓝色的斜线
  16.  
  17. 5.在图片在画圆
  18.  
  19. #括号里的第一个参数是坐标,前两个数为起始坐标,后两个为结束坐标
  20. #用这两个坐标之间的正方形区域生成一个圆,大括号里的第二个参数为圆的开始角度
  21. #第三个参数为圆的结束角度,0到360表示所画的是一个完整的圆形,
  22. #也可以指定的数字来生成一段为圆弧,最后一个参数表示颜色,也可以用RGB来表示想要的颜色
  23. draw1.arc((100,100,300,300),0,360,fill="red")
  24. draw1.arc((0,0,300,300),0,90,fill="blue")
  25. 6.在图片在写文本
  26.  
  27. #使用画笔的text方法在图片上生成文本
  28. #第一个参数为坐标,第二个参数为所有生成的文本的内容
  29. #第三个参数为文本的颜色
  30. draw1.text([0,0],"python","blue")
  31. 7.在图片在生成指定字体的文本
  32.  
  33. #先实例化一个字体对象,第一个参数表示字体的路径,第二个参数表示字体大小
  34. font1=ImageFont.truetype("One Chance.ttf",28)
  35.  
  36. #在图片上生成字体
  37. #第一个括号里的参数表示坐标,第二个参数表示写入的内容
  38. #第三个参数表示颜色,第四个参数表示使用的字体对象
  39. draw1.text([200,200],"linux","red",font=font1)

  验证码实例

  1. #导入random模块
  2. import random
  3.  
  4. #导入Image,ImageDraw,ImageFont模块
  5. from PIL import Image,ImageDraw,ImageFont
  6.  
  7. #定义使用Image类实例化一个长为120px,宽为30px,基于RGB的(255,255,255)颜色的图片
  8. img1=Image.new(mode="RGB",size=(120,30),color=(255,255,255))
  9.  
  10. #实例化一支画笔
  11. draw1=ImageDraw.Draw(img1,mode="RGB")
  12.  
  13. #定义要使用的字体
  14. font1=ImageFont.truetype("One Chance.ttf",28)
  15.  
  16. for i in range(5):
  17. #每循环一次,从a到z中随机生成一个字母或数字
  18. #65到90为字母的ASCII码,使用chr把生成的ASCII码转换成字符
  19. #str把生成的数字转换成字符串
  20. char1=random.choice([chr(random.randint(65,90)),str(random.randint(0,9))])
  21.  
  22. #每循环一次重新生成随机颜色
  23. color1=(random.randint(0,255),random.randint(0,255),random.randint(0,255))
  24.  
  25. #把生成的字母或数字添加到图片上
  26. #图片长度为120px,要生成5个数字或字母则每添加一个,其位置就要向后移动24px
  27. draw1.text([i*24,0],char1,color1,font=font1)
  28.  
  29. #把生成的图片保存为"pic.png"格式
  30. with open("pic.png","wb") as f:
  31. img1.save(f,format="png")

  

python 生成随机图片验证码的更多相关文章

  1. springboot搭建项目,实现Java生成随机图片验证码。

    这篇文章主要介绍了如何通过Java如何生成验证码并验证.验证码的作用我想必大家都知道,话不多说开始实施! 首先创建一个springboot项目以下是项目结构,内有utli工具类.存放生成图片验证码方法 ...

  2. Java生成随机图片验证码

    前台html代码 [Java] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 <div style="margin-top: 50px;&quo ...

  3. python随机图片验证码的生成

    Python生成随机验证码,需要使用PIL模块. 安装: 1 pip3 install pillow 基本使用 1. 创建图片 1 2 3 4 5 6 7 8 9 from PIL import Im ...

  4. Python 生成随机验证码

    Python生成随机验证码  Python生成随机验证码,需要使用PIL模块. 安装: 1 pip3 install pillow 基本使用 1. 创建图片 1 2 3 4 5 6 7 8 9 fro ...

  5. Python生成随机验证码

    Python生成随机验证码,需要使用PIL模块. 安装: pip3 install pillow 基本使用 1.创建图片 from PIL import Image img = Image.new(m ...

  6. python生成随机日期字符串

    python生成随机日期字符串 生成随机的日期字符串,用于插入数据库. 通过时间元组设定一个时间段,开始和结尾时间转换成时间戳. 时间戳中随机取一个,再生成时间元组,再把时间元组格式化输出为字符串 # ...

  7. Python生成随机字符串

    利用Python生成随机域名等随机字符串. #!/usr/bin/env python# -*- coding: utf-8 -*- from random import randrange, cho ...

  8. python生成随机整数

    python生成随机不重复的整数,用random中的sample index = random.sample(range(0,10),10) 上面是生成不重复的10个从1~10的整数 python生成 ...

  9. Python 实现简单图片验证码登录

    朋友说公司要在测试环境做接口测试,登录时需要传入正确的图片的验证码,本着懒省事的原则,推荐他把测试环境的图片验证码写死,我们公司也是这么做的^_^.劝说无果/(ㄒoㄒ)/~~,只能通过 OCR 技术来 ...

随机推荐

  1. 19.Longest Substring Without Repeating Characters(长度最长的不重复子串)

    Level:   Medium 题目描述: Given a string, find the length of the longest substring without repeating cha ...

  2. 10-排序6 Sort with Swap(0, i) (25 分)

    Given any permutation of the numbers {0, 1, 2,..., N−1}, it is easy to sort them in increasing order ...

  3. IO文件夹拷贝(文件内含有文件和文件夹)

    /** * 文件夹拷贝(文件内含有文件和文件夹) * * @param src * @param des */ private static void copy(String src, String ...

  4. UntraEdit 语法高亮 (MSSQL)

    http://www.ultraedit.com/downloads/extras/wordfiles.html 这里有ue 支持的语言的uew文件. 需要把下载的语法文件放到: %APPDATA%\ ...

  5. CVE-2015-1635(MS15-034 )进行DOS攻击

    上一篇的文章方法进行检测漏洞是否存在,接着我们搭建win2008进行DOS攻击测试,导致服务器蓝屏,异常关机. 靶机:windows2008     IIS7.0    192.168.31.91 攻 ...

  6. Java日志组件1---Jdk自带Logger(java.util.logging.Logger)

    最近在看日志的一些东西,发现利用JDK自带的log也可以简单的实现日志的输出,将日志写入文件的过程记录如下: 1.新建LogUtil.Java( 里面写了几个静态方法,为log设置等级.添加log控制 ...

  7. Dev Express Report 学习总结(四)Dev Express 动态生成XRTable使用总结

    1. XRTableCell常见属性  XRTableCell xrTableCell = new XRTableCell(); A. 字体及字体大小 xrTableCell.Font = new S ...

  8. 几种IO情况的学习和总结 关于 =====阻塞/非阻塞以及同步/异步区别

    同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的.所以先限定一下本文的上下文. 背景是Linux环境下的network IO. 在进行解释 ...

  9. PlayMaker Int的两个数进行比较 Int Compare

    Integer 1 和 Integer 2 进行比较,Integer 1 和  Integer 2 相等的时候 执行 ChangeToGreen; Integer 1 比  Integer 2 大的时 ...

  10. Neutron命令测试4

    jolin@jolin:~$ route -nKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface ...