您的位置:首页 > 编程语言 > Python开发

python在图片写文字,产生随机验证码序列号

2017-09-15 16:04 447 查看
用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-8
from 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')


产生随机4位验证码,或者序列号



产生了5组序列号
代码如下:
#coding:utf-8

import 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))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息