python在图片写文字,产生随机验证码序列号
来源:互联网 发布:大学生就业知乎 编辑:程序博客网 时间:2024/05/29 13:34
用PS很简单就可以做到,但是如何用Python完成呢?
一、思路:利用Python强大的图片处理库——Pillow
推荐阅读官方文档(Pillow (PIL Fork) 4.0.0 documentation)
下面介绍今天会用到的模块:The ImageDraw Module,他的功能如下,
支持2D图像
创建绘画对象
基本绘画操作
- 弧/弦/扇形 chord arc pieslice (bbox, strtAng, endAng)
- 椭圆 ellipse (bbox)
- 线段/多段线 line (L) draw.line(((60,60),(90,60), (90,90), (60,90), (60,60))) #draw a square
- 点 point (xy) #单像素点很小看不清,实际中可用实心小圆代替
- 多边形 polygon (L) draw.polygon([(60,60), (90,60), (90,90), (60,90)]) #draw a square
- 矩形 rectangle (bbox) # first coord属于矩形, second coord不属于
- 文字 text(xy,message,font=None) 绘制文字message,文本区域左上角坐标为xy
drawable.text((10, 10), "Hello", fill=(255,0,0), font=None) - 文字大小 textsize(message,font=None) 给定文字message,返回所占像素(width,height)
可选参数
矢量字体支持
效果展示:
可以做到如微信,QQ头像上有多少未接收消息的样子
代码如下:
#coding:utf-8from PIL import Image, ImageDraw, ImageFont#打开当前目录下nanjing.jpg图片img = Image.open('nanjing.jpg')#画出这张图片draw = ImageDraw.Draw(img)#字大小为图小边的16分之一fontsize = int(min(img.size)/4)#字体样式,ttf是不失真的字myfont = ImageFont.truetype('C:/windows/fonts/Arial.ttf', size=fontsize)#字体颜色fillcolor = "#ff0000"width, height = img.size#右上角显示draw.text((img.size[0]-fontsize,0),'99', font=myfont, fill=fillcolor)img.save('result.jpg','jpeg')
产生了5组序列号
代码如下:
#coding:utf-8import string, random#激活码中的字符和数字field = string.ascii_letters + string.digits#获得4个字母和数字的随机组合def getRandom(): return "".join(random.sample(field,4)) #把列表中四个数连接起来变成字符串#生成的每个激活码中有几组:,每组加“-”def concatenate(group): return "-".join([getRandom() for i in range(group)])#另一种写法# con = []# for i in range(group):# con.append(getRandom())# return "-".join(con)#生成n组激活码,默认一组4个def generate(n): return [concatenate(4) for i in range(n)]print(generate(5))
阅读全文
0 0
- python在图片写文字,产生随机验证码序列号
- WEB Service产生随机验证码图片
- Java web 产生随机图片验证码
- 产生随机验证码
- 产生随机验证码
- 随机产生验证码
- 随机产生验证码
- 随机产生验证码
- 重写IHttpHandler接口实现产生随机验证码图片
- python生成随机图片验证码
- Python 生成随机图片验证码
- 产生随机验证图片代码来自CNBlogsDottext10Beta2
- 产生随机图片验证的jsp代码
- JSP产生随机验证码
- 产生随机的验证码
- 产生随机验证码(控制台)
- 自定义随机产生验证码
- 验证码的随机产生
- openCV(Java版):直接操作像素点的实例
- java.net.SocketTimeoutException: Read timed out
- 阿里云ECS环境搭建(Filezilla链接阿里云 安装JDK Tomcat)
- Android电视TV盒子开发——常用ADB命令
- python中的paramiko模块
- python在图片写文字,产生随机验证码序列号
- 用CMD方法彻底禁止端口占用方法
- 三种东西永远不要放到数据库里
- 整理的Java面试题
- 自旋锁
- 【BUG 已解决】Warning: Unexpected character in input: '\' (ASCII=92) state=1 in
- angularjs-1.3代码学习-$parse
- mongoVUE查询
- -bash: pecl: command not found