Python制作验证码(图像处理工具包PIL基本操作)
off999 2024-10-29 14:56 38 浏览 0 评论
一、图像处理工具包PIL简介
PythonWare公司提供了免费的图像处理工具包PIL(Python Image Library),该软件包提供了基本的图像处理功能,如:改变图像大小,旋转图像,图像格式转换,色场空间转换,图像增强,直方图处理,插值和滤波等等。
在PIL中,任何一副图像都是用一个Image对象表示,而这个类由和它同名的模块导出,因此,要加载一副图像,最简单的形式是这样的:
import Imageimg = Image.open(“cat.jpg”)
注意:第一行的Image是模块名;第二行的img是一个Image对象; Image类是在Image模块中定义的。关于Image模块和Image类,切记不要混淆了。现在,我们就可以对img进行各种操作了,所有对img的 操作最终都会反映到到dip.img图像上。
二、图像基本操作
- 打开、显示和保存图片
from PIL import Image
# 打开一个jpg图像文件,注意路径要改成你自己的:
im = Image.open('/Users/michael/test.jpg')
# 获得图像尺寸:
w, h = im.size
#显示图片
im.show()
# 把缩放后的图像用jpeg格式保存:
im.save('/Users/michael/thumbnail.jpg', 'jpeg')- 图像处理(滤镜操作)
from PIL import Image,ImageFilter,ImageFont,ImageDraw
#打开图像
image1 = Image.open('jpg/dog.png')
#滤镜操作(图像模糊)
image2=image1.filter(ImageFilter.BLUR)
#也通过修改参数可以获取许多的滤镜操作
image3=image1.filter(ImageFilter.CONTOUR)
#保存滤镜效果
image2.save('image2.jpg')
image3.save('image3.jpg')
************************
显示效果如下
- 图像的缩放
#打开图片
image1 = Image.open('jpg/dog.png')
#将图片缩放为像素100*100
image1.thumbnail((100,100))
image1.show()- 图片的剪切
image1 = Image.open('jpg/dog.png')
#裁剪图片
image2 = image1.crop((200,200,300,300))- 图片的拼接(粘贴)
from PIL import Image,ImageFilter,ImageFont,ImageDraw
image1 = Image.open('jpg/dog.jpg')
image2=image1.filter(ImageFilter.BLUR)
#创建一个空图片
empty = Image.new('RGB',(512,256),(255,0,0))
#粘贴图片1
empty.paste(image1,(0,0))
#粘贴图片2
empty.paste(image3,(256,0))
empty.show()- 文字水印
from PIL import Image,ImageFilter,ImageFont,ImageDraw
image1 = Image.open('jpg/dog.jpg')
# #设置字体
font = ImageFont.truetype(r'C:\Windows\Fonts\SIMLI',30)
draw = ImageDraw.Draw(image1)
draw.text((0,0),'这是一个测试',font=font,fill = (255,0,0))
image1.show()三、图像处理应用(制作验证码)
#!/usr/bin/python
# # Created by 老刘 on 2020/6/4
# # Author: Lao Liu <412842374@qq.com>
from PIL import Image,ImageFilter,ImageFont,ImageDraw
import random
#1.创建空图片,大小为160*70,白底
image1=Image.new('RGB',(160,70),(255,255,255))
#2.渲染背景,随机颜色填充背景
draw=ImageDraw.Draw(image1)
for x in range(0,160):
for y in range(0,70):
color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
draw.point((x,y),color)
#3.模糊操作,对背景进行模糊
image2=image1.filter(ImageFilter.BLUR)
#4.渲染文字,设置字体及大小
font = ImageFont.truetype(r'C:\Windows\Fonts\SIMLI',40)
draw=ImageDraw.Draw(image2)
#5.创建各类验证码
#数字验证码
def Digital_code():
for x in range(4):
num=random.randint(0,9)
draw.text((40*x,random.randint(0,40)),str(num),font=font,fill=(0,0,0))
#中文验证码
def Chinese_code():
for x in range(4):
num=chr(random.randint(0x4e00,0x9fa5))
draw.text((40*x,random.randint(0,40)),str(num),font=font,fill=(0,0,0))
#字母验证码
def Char_code():
for x in range(4):
num=chr(random.randint(97,97+25))
draw.text((40*x,random.randint(0,40)),str(num),font=font,fill=(0,0,0))
#6.调用验证码
Chinese_code()
#7.显示验证码
image2.show()
#8.保存验证码
image2.save('yanzhengma.jpg')这里只是简单的制作了各类验证码,还可以继续优化,大家也可以改变验证码的颜色,字体,位置,使其更加的美观。
相关推荐
- 炉石传说手游官网下载(炉石传说手游官网下载国服)
-
要下载炉石传说端游,可前往该游戏的官方网站或Blizzard官网,从中下载安装程序并安装。同时,玩家也可在国内的一些游戏下载网站上下载该游戏的安装包,但需保证其来源可靠。另外,在下载安装游戏时,可根据...
- 中信建投证券手机版下载(中信建投证券手机版下载什么软件)
-
不好退。1.中信建投证券app是一种金融工具,下载使用后就是用于完成交易和管理投资的,因此一旦下载就意味着启动了使用过程,是不可以退掉的。2.一些软件商店对于使用了特定时间的软件才可以退款,但是中...
- cad破解版在哪里下载(cad破解版怎么下载怎么安装)
-
如果你下载软件的时候,有提示是敲诈的病毒,那么有可能是因为你在下载软件的时候,不是正规渠道下载的,所以你下载的软件会带有病毒,你可以去电脑管家里面找到你的杀毒软件,来对你下载的软件进行病毒的查杀,你也...
- 游戏厅所有老游戏大全(老版游戏厅)
-
这个答案太多了现在比较普遍的应该是:拳皇系列(97,98为主)三国战纪系列,合金弹头系列,飞机系列等等别名:暴风小子、街头风雨用MAME模拟器可以玩到KOF系列的啊,94、95、96、97、98、...
- 163免费邮箱入口(163免费邮箱入口官网)
-
手机163的登录入口163邮箱官网入口是;https://smart.mail.163.com/login.htm网易邮箱注册方法;1在浏览器搜索“网易邮箱”。2进入网易邮箱官网https://sma...
- 一笔签名设计免费版(设计自己的签名免费版)
-
我国法律没有规定签名时要求一笔一划的写,因此,怎么签名这是公民的自由,合同方式协商一致即可。 但是,在实践中,双方当事人签合同时,建议写工整,能让他人认识签名的是谁,另外,最好在名字上按个手印,...
- win10正式版下载官网(win10官网免费下载)
-
先看系统之家之类的系统盘网站提供的系统盘文件,都是Ghost系统盘。所有的Ghost系统盘都是网络上的电脑系统高手以Ghost系统映像文件为基础制作的系统安装盘,在必要的windows安装系统的基础...
- adobe indesign(adobe indesign 下载)
-
在InDesign中,您可以通过使用数据合并功能来快速导入全年日历。首先,您需要准备一个包含所有日期和相应格式的数据表格,然后在InDesign中创建一个日历模板。接下来,使用数据合并功能将数据表格与...
- qq32位版本下载官方(qq3.3.3版本下载)
-
1152活跃天。QQ等级升级需要的活跃天数和自然的日是完全不同的,活跃天并不等于自然天数。活跃天是需要满足加速条件后才能获得的,相当于某些业务的成长值,经验值等,QQ等级由四个标识图展示,从低到高分别...
- 最新版本qq手机版下载安装免费
-
你说的是下载QQ软件吗?现在手机应用市场里都有QQ软件下载的,或者直接百度也可以。不用。苹果手机在appstore里下载手机qq步骤如下:1.在苹果手机中打开自带的AppStore软件进入;2.按...
- 全国34个卫视频道(全国34个卫视频道节目单)
-
全国卫视频道不止34个。全国各地28大省级卫视:北京卫视·天津卫视·河北卫视·山西卫视·内蒙古卫视·辽宁卫视·吉林卫视·黑龙江卫视·江苏卫视·浙江卫视·安徽卫视·江西卫视·山东卫视·河南卫视·湖北卫视...
- 福昕pdf阅读器电脑版(福昕pdf阅读器电脑版怎么用)
-
这是因为你的pdf文件没有与福昕阅读器进行关联。你如果要想双击pdf文档后使用福昕阅读器打开,可以这样设置一下::选中pdf文档,右击鼠标,在快捷菜单中点击属性。点击“属性”对话框中“打开方式”右边的...
- 快吧游戏官网(快吧游戏中心)
-
1.快吧游戏可以通过官方网站或应用商店进行下载。2.官方网站提供了游戏的下载链接,也可以通过扫描二维码进行下载。快吧游戏是一款手机游戏,可以在应用商店中下载安装。以下是在iOS和Android系统...
- 最开放的浏览器下载(最开放的浏览器下载软件)
-
可以直接在浏览器设置内打开下载目录进行查看,步骤如下:所需材料:华为6X、华为浏览器示例。一、因为所有浏览器的设置基本一至,这里以华为浏览器为例,首先点击打开华为浏览器。二、打开浏览器后,点击右下角的...
欢迎 你 发表评论:
- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
