python图形图像处理--验证码的制作
from PIL import Image,ImageDraw,ImageFont
import random
from io import BytesIO class code():
def __init__(self):
self.codelen=4
self.codeCon="ABCDEFG23456789acbdsvjhn"
self.width=120
self.height=60
self.im=None
self.lineNum=0
self.pointNum=0
def randBgColor(self):
return (random.randint(0,120),random.randint(0,120),random.randint(0,120),220)
def create(self):
self.bg=self.randBgColor()
self.im=Image.new("RGBA",size=(self.width,self.height),color=self.bg)
def randFgColor(self):
return (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255),255)
def lines(self):
lineNum=self.lineNum or random.randint(5,10)
draw = ImageDraw.Draw(self.im)
for itenm in range(lineNum):
place=(random.randint(0,self.width),random.randint(0,self.height),random.randint(0,self.width),random.randint(0,self.height))
draw.line(place,fill=self.randFgColor(),width=random.randint(1,2))
def point(self):
pointNum = self.pointNum or random.randint(20, 60)
draw = ImageDraw.Draw(self.im)
for itenm in range(pointNum):
place = (random.randint(0, self.width), random.randint(0, self.height))
draw.point(place, fill=self.randFgColor())
def rote(self):
self.im=self.im.rotate(random.randint(-10,20))
im1=Image.new("RGBA",size=(self.width,self.height),color=self.bg)
self.im=Image.composite(self.im,im1,self.im)
def text(self):
draw = ImageDraw.Draw(self.im)
for item in range(self.codelen):
self.codeCon[random.randint(0,len(self.codeCon)-1)]
text=self.codeCon[random.randint(0,len(self.codeCon)-1)]
draw.text((item*self.width/self.codelen,random.randint(0,self.height-40)),text,fill=self.randFgColor(),font=ImageFont.truetype("C:/Windows/Fonts/AdobeSongStd-Light.otf",random.randint(26,50)))
self.rote()
def output(self):
self.create()
self.lines()
self.point()
self.text()
self.im.show()
# self.im.save("11.png","png")
bt=BytesIO()
self.im.save(bt,"png") #保存内存
return bt.getvalue() codeobj=code()
codeobj.output()
python图形图像处理--验证码的制作的更多相关文章
- 实验:Python图形图像处理
1. 准备一张照片,编写Python程序将该照片进行图像处理,分别输出以下效果的图片:(a)灰度图:(b)轮廓图: (c)变换RGB通道图:(d)旋转45度图. 2. 假设当前文件夹中data.csv ...
- Python图形图像处理库的介绍之Image模块
http://onlypython.group.iteye.com/group/wiki/1372-python-graphics-image-processing-library-introduce ...
- python PIL 图像处理
python PIL 图像处理 This blog is from: https://www.jianshu.com/p/e8d058767dfa Image读出来的是PIL的类型,而skimage. ...
- python之使用PIL模块制作随机验证码
制作随机验证码,需要如下知识点: 1.随机验证码的制作(这里用的是random模块随机产生字符) 2.图片的制作 3.随机直线干扰项 4.其他随机干扰项 代码如下: from PIL import I ...
- C&C++图形图像处理开源库
Google三维APIO3D O3D 是一个开源的 WebAPI 用来在浏览器上创建界面丰富的交互式的 3D 应用程序.这是一种基于网页的可控3D标准.此格式期望真正的基于浏览器,独立于操作系统之外, ...
- Python 代码实现验证码识别
Python 代码实现验证码识别 测试开发社区 1周前 源 / j_hao104 一.探讨 识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域…… ...
- python数字图像处理(17):边缘与轮廓
在前面的python数字图像处理(10):图像简单滤波 中,我们已经讲解了很多算子用来检测边缘,其中用得最多的canny算子边缘检测. 本篇我们讲解一些其它方法来检测轮廓. 1.查找轮廓(find_c ...
- Python识别网站验证码
http://drops.wooyun.org/tips/6313 Python识别网站验证码 Manning · 2015/05/28 10:57 0x00 识别涉及技术 验证码识别涉及很多方面的内 ...
- python PIL 图像处理操作
python PIL 图像处理 # 导入Image库 import Image # 读取图片 im = Image.open("1234.jpg") # 显示图片 im.show( ...
随机推荐
- 装win7英文版装系统学习
1:语言变换,下载Vistalizator ,详细的方法点击:方法见.需要安装语言包,语言包地址请点击:语言包.
- DataV数据可视化功能特性
使用DataV制作实时销售数据可视化大屏 (本课程可以帮助数据分析师学习数据可视化大屏的制作,包括制作的方法.设计原则等基础知识,并提供一个微项目,使用数加的DataV基于ABC公司的经营数据,快速构 ...
- b站编程课程资源汇总
b站编程课程资源汇总 一.总结 一句话总结: b站的编程资源很多,而且很良心 二.编程课程资源汇总 b站看到的,分享给大家 https://www.bilibili.com/video/av50680 ...
- redis high available solution/ redis 高可用方案
http://developers.linecorp.com/blog/?p=1420 http://engineering.docusign.com/articles/redis-sentinel- ...
- 源码编译apache出错
报错信息如下 exports.c:1572: error: redefinition of `ap_hack_apr_allocator_create' exports.c:177: error: ` ...
- 转 Cookie、Session
https://www.cnblogs.com/liwenzhou/p/8343243.html Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况 ...
- Selenium 2自动化测试实战6(异常)
一.异常 python用异常队形(exception object)来表示异常情况,遇到错误后,会引发异常.如果异常对象并未被处理和捕捉,则程序就会用所谓的回溯(Traceback,一种错误信息)来终 ...
- 【Java学习笔记】LinkedList JDK1.6
如下一段代码,在JDK1.6的LinkedList中,是下图这样存储的.有一个节点值为null的节点,叫做header,header的next是0,3的next是header,这是一个循环链表 Lin ...
- Java程序设计——反转字符串 & 找朋友 & 计算int型二进制1的个数 & 情报加密 & 计算日期 & 求近似数 & 输出较小数(练习1)
作为刚刚入门Java的选手,其实C++的功底起到了很大的作用.但是,Java之于C++最大的不同,我个人认为,是其类的多样性.才入门的我,写着老师布置的简单的面对过程的题,如果是C++,可以算是简单了 ...
- Python学习之UDP版socket&SocketServer
7.6 基于UDP的socket 无连接的,不必与对方建立连接,而是直接把数据发送给对方: 适用于一次传输销量数据结构,可靠性不高的应用环境,因为其传输速率快 # 服务端 import socket ...