资源简介 广东高等教育信息技术八年级下册教学设计课题 第3课 生成登录验证码单元第二单元学科信息技术年级八年级学习目标理解课本中PIL库Image、ImageDraw、ImageFont模块中相关函数的基本功能。掌握用相关函数创建、显示和保存图像的方法。掌握用随机函数生成验证码和随机颜色的方法。会用本课知识编程生成包含字符的图片。重点掌握用相关函数创建、显示和保存图像的方法。难点掌握用随机函数生成验证码和随机颜色的方法。教学过程教学环节教师活动学生活动设计意图导入新课观看图形。在微信、邮箱等应用程序的登录页面,通常需要验证码登录。验证码的设置可以防止恶意程序暴力破解用户名和密码非法登录,提高系统的安全性。验证码由计算机自动生成,如何利用Python编程生成验证码呢? 图2-3-1中验证码的内容是什么?你还见过其他样式的验证码吗?图中的验证码是x7pa;验证码通常还有选择点击图、滑动图等观看思考 激发学生的学习兴趣,初步了解Python生成验证码。讲授新课分析问题本课的任务是生成一张含有5位随机数验证码图片。程序要解决的关键问题:一是如何生成一张随机颜色的底图;二是如何在该图上添加五个0~9之间的随机数。要实现以上功能,需要利用一下两个库(模块):(1)利用random模块随机设定底图颜色和验证码的数字(2)利用PIL库生成底图并添加验证码二、学习新知(一)PIL库PIL(python lmage Library),是一个用于图像处理的Python扩展库。在DOS方式下安装PIL库的命令为:pip install pillow本课任务将用到PIL库中的Image,ImageFont,ImageDraw三个模块。Image模块是PIL中的核心模块,具有创建、打开、显示、保存、裁剪和获取图像属性等功能;ImageDraw模块具有在图像上绘图和添加文字等功能。从PIL库中导入这三个模块的命令如下: from PIL import Image,ImageDraw,ImageFont体验 from PIL import Image,ImageDraw,ImageFont体验:修改程序captcha.py,创建其他尺寸和颜色的底图,并把自己姓名的汉语拼音添加到底图的中间位置。2、在IDLE交互模式下按顺序输入以下命令,参考图2-3-2的输出内容情况,比较import命令与from-import命令有何不同。三、设计算法根据前面的分析,生成一张含五位随机数验证码图片的算法思路如下:1、从PIL库导入Image、ImageFont、ImageDraw三个模块2、从random模块导入randint()函数3、创建验证码的随机色底图4、设定底图为要添加内容的对象5、在底图上添加五个0~9之间的随机数作为验证码四、 编写程序(一)创建底图利用Image模块中的new()函数来创建底图。为了得到随机颜色的底图,需要生成三个0~255之间的随机数,分别作为R、G、B三个颜色通道的数值。探究: 请根据以上提示完善程序captcha.py,创建一张随机颜色的底图。(二)设定底图为要添加内容的对象有了底图,再通过以下的代码设定,就可以调用相关函数在该图上进行绘图和添加文字等操作了。(三)在图像上添加数字验证码1、预设验证码的文字样式生成五个0~9之间的随机数字组成验证码可使用for循环控制,分别产生五个0~9的随机数字,并按一定的间隔添加到底图上。假设第一个字符起始位置在(10,0),后续每隔30写入下一个数字。则生成验证码的语句为:显示和保存图像完成验证码的添加后,可以使用show()函数显示图像,用save()函数把图像以文件形式保存起来。实践与创作: 1、请修改程序captcha.py,以生成5位随机颜色的数字验证码。(提示:修改循环体部分) 2、2、位声明图片版权,不少作者会在公开的摄影作品中添加水印。请编写程序,对自己的一张照片添上个性化文字(如图2-3-3所示)。[提示:打开现有图片的参考代码是img=Image.open(“view.jpg”,’r’]实践与评估1、导入模块命令‘from PIL import Image’与下列哪个命令都可以导入相同的模块?(B) A、from Image B、import PIL.Image C、from PIL D、import PIL2、Image.new的功能是(A)图像 A、创建 B、裁剪 C、缩放 D、保存3、语句‘canvas.text((100,50),’I love China’,’green’,ziti)’中‘(100,50)’表示( B ) A、图像尺寸 B、文字位置 C、文字内容 D、文字颜色4、以下说法正确的是(C )A、在Python中只能用red、blue等控制颜色 B、PIL属于Python的标准库C、必须先把图像设定为操作的对象,才能在图像上添加文字 D、用save()函数默认保存的位置是桌面进行问题分析,初步了解random模块。学习PIL库的安装格式。PIL库中导入Image,ImageFont,ImageDraw三个模块。 了解random模块导入randint函数的用法。学生听老师讲解,了解创建image模块的方法。教师讲解,学生听讲,如何在图片上添加数字验证码。学生动手自己显示和保存图像。教师讲解,以及便于学生理解和掌握。更进一步掌握合成的操作方法。听讲、操作、实践 自主学习通过例子讲解,让学生了解到如何制作设定底图、在图片上添加数字验证码。让学生了解明白show、save函数。课堂小结学生回答利用问题形式进行总结板书一、分析问题二、学习新知 (一)PIL库三、设计算法四、编写程序 (一)创建底图 (二)设定底图为要添加内容的对象 (三)在图像上添加数字验证码 (四)显示和保存图像课件40张PPT。 第 3 课 生成登录验证码 —— PIL 库的应用广东高等教育出版 第八册下 新知导入图 2-3-1 某网站登录界面新知讲解快门乐新知讲解交流图中的验证码是x7pa;验证码通常还有选择点击图、滑动图等新知讲解一、分析问题 本课的任务是生成一张含有5位随机数验证码图片。程序要解决的关键问题:一是如何生成一张随机颜色的底图;二是如何在该图上添加五个0~9之间的随机数。 要实现以上功能,需要利用一下两个库(模块):(1)利用random模块随机设定底图颜色和验证码的数字(2)利用PIL库生成底图并添加验证码新知讲解二、学习新知(一)PIL库 pip install pillow新知讲解 本课任务将用到PIL库中的Image,ImageFont,ImageDraw三个模块。Image模块是PIL中的核心模块,具有创建、打开、显示、保存、裁剪和获取图像属性等功能;ImageDraw模块具有在图像上绘图和添加文字等功能。从PIL库中导入这三个模块的命令如下: from PIL import Image,ImageDraw,ImageFont新知讲解体验新知讲解#charpic.py#从PIL库中导入这三个模块from PIL import Image,ImageDraw,ImageFont#创建一张宽200、高100的红色底图img=Image.new(‘RGB’,(200,100),’red’)canvas=ImageDraw.Draw(img) #把底图放到“画布”canvas上新知讲解#设变量font,记录文字样式为simsun字体,大小26font=ImageFont.truetype(‘simsun.ttc’,26)#在坐标为(20,0)的位置上添加样式为font蓝色文字‘welcome!’canvas.text((20,0),’Welcome!’,’blue’,font)img.show() #显示生成的图片img.save(‘charpic.jpg’) #以文件名charpic.jpg保存图片新知讲解 1、修改程序captcha.py,创建其他尺寸和颜色的底图,并把自己姓名的汉语拼音添加到底图的中间位置。探究新知讲解新知讲解 2、在IDLE交互模式下按顺序输入以下命令,参考图2-3-2的输出内容情况,比较import命令与from-import命令有何不同。新知讲解>>>import numpy #导入库>>>linspace(0,10,6) #生成等差数列>>>numpy.linspace(0,10,6) #生成等差数列>>>from numpy import linspace #从库中导入对象(函数)>>>linspace(0,10,6) #生成等差数列新知讲解图2-3-2import命令与from-import命令执行效果比较新知讲解三、设计算法根据前面的分析,生成一张含五位随机数验证码图片的算法思路如下:新知讲解1、从PIL库导入Image、ImageFont、ImageDraw三个模块2、从random模块导入randint()函数3、创建验证码的随机色底图4、设定底图为要添加内容的对象5、在底图上添加五个0~9之间的随机数作为验证码6、显示和保存图像新知讲解四、编写程序(一)创建底图利用Image模块中的new()函数来创建底图。为了得到随机颜色的底图,需要生成三个0~255之间的随机数,分别作为R、G、B三个颜色通道的数值。新知讲解探究 请根据以上提示完善程序captcha.py,创建一张随机颜色的底图。新知讲解# captcha.py from PIL import Image,ImageDraw,ImageFont #导入模块from random import randint #从标准库的随机模块中导入函数randint新知讲解#用三个变量分别存放生成三个0~255的随机数,作为R、G、B通道的三个数值c1=randint(0,255) c2=_________________ c3=_________________img=Image.new(‘RGB’,(150,30),(c1,c2,c3)) #创建随机颜色的底图randint(0,255) randint(0,255) 新知讲解(二)设定底图为要添加内容的对象有了底图,再通过以下的代码设定,就可以调用相关函数在该图上进行绘图和添加文字等操作了。canvas=ImageDraw.Draw(img) #设定将要添加文字或绘图的对象,即img中的底图新知讲解(三)在图像上添加数字验证码 1、预设验证码的文字样式#设变量font,记录文字样式为simsun字体,大小26font=ImageFont.truetype(‘simsun.ttc’,26)新知讲解2、生成五个0~9之间的随机数字组成验证码可使用for循环控制,分别产生五个0~9的随机数字,并按一定的间隔添加到底图上。假设第一个字符起始位置在(10,0),后续每隔30写入下一个数字。则生成验证码的语句为:新知讲解#生成五个0~9的随机数,str函数的作用是把数字类型转换成字符串类型for i in range(5): canvas.text((10+i*30,0),str(randint(0,9)),’black’,font)新知讲解(四)显示和保存图像 img.show()img.save(‘captcha.jpg’)完成验证码的添加后,可以使用show()函数显示图像,用save()函数把图像以文件形式保存起来。新知讲解探究 请把上述代码组织成一个完整的程序,并运行程序生成验证码图片。新知讲解实践与创作1、请修改程序captcha.py,以生成5位随机颜色的数字验证码。(提示:修改循环体部分)新知讲解for i in range(5): #生成五个随机颜色的0~9的数字 r=________________ g=_______________ b=_______________ canvas.text((10+i*30,0),str(randint(0~9)),(r,____,____),font)randint(0,255)randint(0,255)randint(0,255)bg新知讲解2、位声明图片版权,不少作者会在公开的摄影作品中添加水印。请编写程序,对自己的一张照片添上个性化文字(如图2-3-3所示)。[提示:打开现有图片的参考代码是img=Image.open(“view.jpg”,’r’]图 2-3-3 检测与评估1、导入模块命令‘from PIL import Image’与下列哪个命令都可以导入相同的模块?( ) A、from Image B、import PIL.Image C、from PIL D、import PIL拓展新知B2、Image.new的功能是( )图像 A、创建 B、裁剪 C、缩放 D、保存拓展新知A3、语句‘canvas.text((100,50),’I love China’,’green’,ziti)’中‘(100,50)’表示( ) A、图像尺寸 B、文字位置 C、文字内容 D、文字颜色拓展新知B4、以下说法正确的是( )A、在Python中只能用red、blue等控制颜色 B、PIL属于Python的标准库C、必须先把图像设定为操作的对象,才能在图像上添加文字 D、用save()函数默认保存的位置是桌面拓展新知C 5、完成表2-3-1的学习评估,并将评估等级填写到“我的成长记录袋”中。拓展新知拓展新知表2-3-1 学习评估表课堂总结一、PIL库的安装命令二、Image、ImageDraw、ImageFont模块的导入命令 pip install pillow from PIL import Image,ImageDraw,ImageFont板书设计一、分析问题二、学习新知 (一)PIL库三、设计算法四、编写程序 (一)创建底图 (二)设定底图为要添加内容的对象 (三)在图像上添加数字验证码 (四)显示和保存图像谢谢21世纪教育网(www.21cnjy.com) 中小学教育资源网站 有大把高质量资料?一线教师?一线教研员?欢迎加入21世纪教育网教师合作团队!!月薪过万不是梦!!详情请看:https://www.21cnjy.com/help/help_extract.php 展开更多...... 收起↑ 资源列表 第3课 生成登录验证码.doc 第3课 生成登录验证码.pptx