作品展示

背景需求

难点:如何让生成图片带两个颜色的数字?

上一次”学号拼图3*3“学习活动中,发现03、04、05、06、08、09 、 23、26、28拼图都有困境,教师帮助。十位数字都包含多个圆弧结构,幼儿对于大量的圆弧碎片图形的多重组合(2个数字都是圆弧结构)感到茫然,没有黏贴。最后是教师指点后或者正确摆放后,幼儿才黏贴上去。(这条圆弧和这条圆弧能拼在一起,但实际并不是正确位置)

因此,笔者希望将学号的两个数字用不同灰度颜色表示(办公室打印机没有彩色墨水)

十位数的数字用深灰色,个位数的数字用浅灰色,有明显区分。

难点:如何让生成图片带两个颜色的数字?

参考CSDN,修改代码,实现需求

1、仿抖音短视频系统源码,制作彩色验证码_云豹网络科技的博客-CSDN博客

2、用python实现生成验证码图片_python生成验证码图片_心系五道口的博客-CSDN博客

代码设置:

'''
目的:学号拼图的两个数字颜色不同(深灰\浅灰)
作者:阿夏
日期:2023年05月23日22:17'''import random
import string
from random import choice, randint, randrangefrom PIL import Image, ImageDraw, ImageFontcolour1=int(input('十位数的数字的颜色(100深灰)\n'))
colour2=int(input('个位数的数字的颜色(170中灰)\n'))
# 28个学号
num=[]
for x in range(1,29):num.append('%02d'%x)
print(num)# 循环28张图片
n=1
for x in range(len(num)):# 读取num里面的每个数字res1="{}".format(num[x])print(res1)   # 25# 26# 27# 28# 图片大小、数字数量(坐标用) 背景色size=[600,400]    # 图片大小characterNumber=2 # 几个数字随机抽取2个数字bgcolor=(255,255,255)    # 背景颜色 白色imageTemp = Image.new('RGB', size, bgcolor)draw = ImageDraw.Draw(imageTemp)     # text = selectedCharacters(characterNumber)  # 文字格式text = res1font = ImageFont.truetype('c:\\windows\\fonts\\arial.TTF', 350)width, height = draw.textsize(text, font)# # 随机字符位置(确保数字在中心)startX = -90widthEachCharater = width//characterNumbera=[colour1,colour2]          # 深灰、中灰      for i in range(characterNumber):startX += widthEachCharater +1# position = (startX, (size[1]-height)//2+randint(-5,5))position = (startX,(size[1]-height)//7)g=b=r=a[i]  # 第1个数字 RGB色等于深灰# 第2个数字 RGB色等于终会draw.text(xy=position, text=text[i], font=font, fill= (r,g,b)) # 填充色彩# 对像素位置进行微调,实现扭曲的效果imageFinal = Image.new('RGB', size, bgcolor)   pixelsFinal = imageFinal.load()pixelsTemp = imageTemp.load()for y in range(size[1]):offset = randint(-1,0)for x in range(size[0]):newx = x+offsetif newx>=size[0]:newx = size[0]-1elif newx<0:newx = 0pixelsFinal[newx,y] = pixelsTemp[x,y]imageFinal.save(r"C:\Users\jg2yXRZ\OneDrive\桌面\彩色数字\学号{}.jpg".format('%02d'%n))       n+=1 

不同灰度的效果

第1个数字RGB(100 100 100)

第2个数字RGB(170 170 170)

感悟:

在无法使用彩色打印基础上,制作不同灰度的数字、文字、图案,提升幼儿拼图的效率

直接生成学号拼图的代码-全部代码

 1、路径+预先建立一下文件夹和word模板

2、word模板的格式

word模板的格式(二维码下载)

3、三个文件夹做好(内部空)也可以在代码里写个自动新建文件夹

4、 全部代码(随机打乱)-(生成  华文彩云 字体)

'''
项目:学号数字矢量图的3*3格拼图  1页两份 横版
作者:阿夏
日期:2023年4月20日21:47
'''num=int(input('生成多少人(28人)\n'))
Number=int(input('随机抽取几个图片(9个)\n'))print('----------第1步:19张大写字母PNG图片*每张图片切割12张----------------')
# 源代码: https://blog.csdn.net/qq_34777982/article/details/125019068?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-125019068-blog-129622294.235^v29^pc_relevant_default_base3&spm=1001.2101.3001.4242.2&utm_relevant_index=4
# Python 裁剪九宫格图片 —— 筑梦之路
import sys
import os
import random
import string
from random import choice, randint, randrange
from PIL import Image, ImageDraw, ImageFont# 生成两位数学号xh=[]
for i in range(1,num+1):xh.append('%02d'%i)
print(xh)
# ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28']colour1=int(input('十位数的数字的颜色(100深灰)\n'))
colour2=int(input('个位数的数字的颜色(170中灰)\n'))
# 28个学号# 循环28张图片
n=0
for x in range(len(xh)):# 读取num里面的每个数字res1="{}".format(xh[x])print(res1)   # 25# 26# 27# 28# 图片大小、数字数量(坐标用) 背景色size=[600,402]    # 图片大小characterNumber=2 # 几个数字随机抽取2个数字bgcolor=(255,255,255)    # 背景颜色 白色imageTemp = Image.new('RGB', size, bgcolor)draw = ImageDraw.Draw(imageTemp)     # text = selectedCharacters(characterNumber)  # 文字格式text = res1font = ImageFont.truetype('c:\\windows\\fonts\\STHUPO.TTF', 350)    # 华文琥珀# font = ImageFont.truetype('c:\\windows\\fonts\\msyhbd.TTC', 350)     # 微软雅黑width, height = draw.textsize(text, font)# # 随机字符位置(确保数字在中心)# 华文琥珀的序号# startX = -105    # widthEachCharater = width//characterNumber# 微软雅黑startX = -100widthEachCharater = width//characterNumbera=[colour1,colour2]          # 深灰、中灰      for i in range(characterNumber):startX += widthEachCharater +1# position = (startX, (size[1]-height)//2+randint(-5,5))position = (startX,(size[1]-height)//3)g=b=r=a[i]  # 第1个数字 RGB色等于深灰# 第2个数字 RGB色等于终会draw.text(xy=position, text=text[i], font=font, fill= (r,g,b)) # 填充色彩# 对像素位置进行微调,实现扭曲的效果imageFinal = Image.new('RGB', size, bgcolor)   pixelsFinal = imageFinal.load()pixelsTemp = imageTemp.load()for y in range(size[1]):offset = randint(-1,0)for x in range(size[0]):newx = x+offsetif newx>=size[0]:newx = size[0]-1elif newx<0:newx = 0pixelsFinal[newx,y] = pixelsTemp[x,y]imageFinal.save(r"C:\Users\jg2yXRZ\OneDrive\桌面\学号数字拼图\学号数字拼图0\{}.jpg".format('%02d'%(n+1)))    n+=1 # 批量调整图片的大小
# 生成0里面的图片大小# 1146     # 687  改成600*400
from PIL import Image
import os# 原始文件夹路径
original_folder = "C:/Users/jg2yXRZ/OneDrive/桌面/学号数字拼图/学号数字拼图0"
# 保存的新文件夹路径
new_folder = "C:/Users/jg2yXRZ/OneDrive/桌面/学号数字拼图/学号数字拼图"# 遍历原始文件夹中的图像
for filename in os.listdir(original_folder):img = Image.open(os.path.join(original_folder, filename))# 改变尺寸img_resized = img.resize((600, 402))   #这里是你要转换的尺寸 两个数字能被3整除# 保存到新文件夹img_resized.save(os.path.join(new_folder, filename))file_root = r"C:\Users\jg2yXRZ\OneDrive\桌面\学号数字拼图\学号数字拼图" #要切的图片放的文件
fileList = []
n = 0
#读取文件列表
def read_bmp_file_list(path):for root, dirs, files in os.walk(path, topdown=False):for file in files:fileList.append(os.path.join(root, file))
#开始切图 9格
def qie_tu(file_path):global nim = Image.open(file_path)# 图片的宽度和高度(原始图片大小1280 720)img_size = im.sizeprint("小图片宽度和高度分别是{}".format(img_size))#切成512X512x = 0y = 0w = 200   # 列几条?600/3h = 134   # 行几条?402/3for j in range(0,3):for i in range(0,3):#region = im.crop((x, y, x+w*i, y+h*j))print(x+w*i, y+h*j,x+w*i+w, y+h*j+h)region = im.crop((x+w*i, y+h*j,x+w*i+w, y+h*j+h))#文件输出位置region.save(r"C:\Users\jg2yXRZ\OneDrive\桌面\学号数字拼图\学号数字拼图1\{name}.jpg".format(name='%03d'%n))n=n+1if __name__ == '__main__':read_bmp_file_list(file_root)for f in fileList:qie_tu(f)# print('----------第2步:读取图片,写入模板----------------')
import os
from PIL import Image print('----------第1步:提取图片路径------------')path=[]
pr="C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\学号数字拼图\\学号数字拼图1"
# 过滤:只保留png结尾的图片
imgs1=os.listdir(pr)
for img1 in imgs1:if img1.endswith(".jpg"):path.append(pr+'\\'+img1)
# 所有图片的路径
print(path)
# 216条路径(18张*12图)
print(imgs1)print('----------第2步:新建一个临时文件夹------------')
# 新建一个”装N份word和PDF“的文件夹
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\学号数字拼图\零时Word')print('----------第3步:随机抽取9张图片 ------------')import docx
from docx import Document
from docx.shared import Pt
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn
import randomimport os,time
import docx
from docx import Document
from docx.shared import Inches,Cm,Pt
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qnfrom docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColorfor nn in range(0,int(num/2)):    #28/2 0-14doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\学号数字拼图\学号数字拼图模板.docx')
#     # 制作列表    # 从左边图列表和右边图列表中抽取图片(12张图片,可能5个向左、7个向右边)# 24条里面0和12条是一组,2个里面随机抽1一个,1和13是一组,2个里面随机抽一个…… 抽出12个图片后r=[]    c=[]r.append(path[nn*18:nn*18+18])        # 左侧第一份,# r.append(path[nn*24:nn*24+24])        # 连续12张图片、2份字母插入同一份A4# print(r)# 再打乱顺序读取12个      for a in r:for b in a:c.append(b)# print(c)    # figures1=c[0:9]    # 前9张不重复打乱     # figures2=c[9:18]    # 后9张不重复打乱figures1=random.sample(c[0:9],Number)    # 前9张不重复打乱     figures2=random.sample(c[9:18],Number)    # 后9张不重复打乱# figures3=random.sample(c[12:18],Number)    # 后6张不重复打乱# figures4=random.sample(c[18:24],Number)    # 后6张不重复打乱# 9+9张不重复打乱图片合并figures=figures1+figures2# figures=figures1+figures2+figures3+figures4print(figures)# 每2个学号一组的列表xh2=xh[nn*2:nn*2+2]print(xh2)for z in range(2):        # 5行组合循环2次 每页两张表# 单元格位置3*3格bg=[]# 前1+3+1行不要写入 从4动for x in range(5,8):        # 3行 索引5行6行7行for y in range(0,3):    # 3列 索引0列1列2列ww='{}{}'.format(x,y)bg.append(ww)print(bg) table = doc.tables[z]          for t in range(len(bg)):   # 02pp=int(bg[t][0:1])    qq=int(bg[t][1:2])  # print(p)               k=figures[z*9:z*9+9][t]         print(pp,qq,k)# 写入图片run=doc.tables[z].cell(pp,qq).paragraphs[0].add_run()        # 在第1个表格中第2个单元格内插入国旗run.add_picture('{}'.format(k),width=Cm(4.68),height=Cm(2.98))# 单元格宽度4.7   3table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.LEFT #居中 # 第1个表的抬头title='学号_____________班级: 中 ____班  数字拼图({}号)'.format(xh2[z])# 写入序号和生肖名称run=table.cell(0,0).paragraphs[0].add_run(title)    # 在单元格0,0(第1行第1列)输入第0个图图案run.font.name = '黑体'#输入时默认华文彩云字体# run.font.size = Pt(46)  #输入字体大小默认30号 换行(一页一份大卡片run.font.size = Pt(15)  #输入字体大小默认30号 一行里(可以一页两份)run.font.bold= True  #是否加粗run.font.color.rgb = RGBColor(200,200,200) #数字小,颜色深0-255# paragraph.paragraph_format.line_spacing = Pt(180) #数字段间距r = run._elementr.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷table.cell(0,0).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中   doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\学号数字拼图\零时Word\{}.docx'.format('%02d'%nn))   from docx2pdf import convert# docx 文件另存为PDF文件inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/学号数字拼图/零时Word/{}.docx".format('%02d'%nn)  # 要转换的文件:已存在outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/学号数字拼图/零时Word/{}.pdf".format('%02d'%nn)  # 要生成的文件:不存在# 先创建 不存在的 文件f1 = open(outputFile, 'w')f1.close()# 再转换往PDF中写入内容convert(inputFile, outputFile)print('----------第4步:把都有PDF合并为一个打印用PDF------------')# 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
import os
from PyPDF2 import PdfFileMerger
target_path =  'C:/Users/jg2yXRZ/OneDrive/桌面/学号数字拼图/零时Word'
pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]
pdf_lst.sort()
file_merger = PdfFileMerger()
for pdf in pdf_lst:print(pdf)file_merger.append(pdf)
file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/学号数字拼图/(打印合集)学号数字拼图A4一页两份(3乘3张){}人共{}份).pdf".format(num,int(num/2)))
file_merger.close()
# doc.Close()# print('----------第5步:删除临时文件夹------------')
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/学号数字拼图/零时Word') #递归删除文件夹,即:删除非空文件夹

验证时的代码修改:

5、全部代码(验证用)-(生成  华文彩云 字体)

修改代码,顺序写入图片,验证拼图结果的正确性。

随机打乱拼图+成果图片(验证用)的对比

学号01-09的学具

学号10-19的学具

学号20-28的学具

 目前只测试了华文彩云(换个字体要调整数字在图片上的位置,需要测试很久)

教学过程:

时间:2023年06月27日 8:20-9:00

班级:中6

人数:22人

材料准备:

学习照片:

 

完成的孩子添加一更辅助纸条

(便于提着拎着,挂着,展示)

其他纸条制作:

作品展示:

感悟:

1、16位自己完成

(1)前期做过一次,所以孩子们有经验(书写学号)

(2)两个数字颜色不同,辨认起来更便利(能有意识把同色的色块聚集在一起)

3、6位孩子求助“不会做”——月龄小,个别指导。

(1)没有写学号就先裁剪了,

(2)先剪后写学号(上下位置误差)

(3)把粘纸卡片剪了(上次制作学号拼图也是这样。)

【教学类-34-05】20230523拼图(数字学号0X-长方块拼图-双色深灰浅灰)3*3格子(中班主题《个别化拼图》偏艺术-美术)相关推荐

  1. 【教学类-12-10】20230316《连连看竖版6*6 (3套题目空心图案)(中班主题《玩具总动员》)

    2023年2月28日在中1班做<练练看竖版6*6>,打印时失误,选择28份打印28份了,所以多打印了很多带有中一班字样的<连连看竖版6*6>学具 2023年3月16日,我在中6 ...

  2. 【教学类-24-02】20230306《数字火车-升序1-10取5条空3格》(中班《玩具总动员》)

    效果展示: 背景需求: 在中班实验了数字火车,5个连续升序数字中,完成1个填空.本次我不想抽取5个连续数字,直接将1-10所有数字放到火车车厢中,让幼儿填空缺的数字(任意几个,比如空缺3个,在不同的位 ...

  3. 【教学类-14-01】20221113《米罗连线图+图形数量统计6*6-2》(中班主题《》)

    效果展示--统计图+米罗线条画 实际在中班操作,没有姓名,只有学号 教学要求: 0.写学号 1.涂色:把相同图案涂成一种颜色 2.连线:用一根线条连接同一个图案(米罗星月夜风格> 3.统计:图案 ...

  4. 【教学类-13-04】20230404《数字色块图+判断密码是否正确-5*7*8-A4横板-横切》(中班主题《我爱我家》)

    背景需求: 1.项目: 去年上学期给中班.大班孩子做过一个"像素数字图""的游戏. [教学类-13-01]20221112<数字色块图5*7*9-A4竖版>( ...

  5. 【教学类-13-01】20221112《数字色块图5*7*9-A4竖版》(中大班主题《》)

    效果展示 打印效果:(浅蓝色打印纸) 背景需求:    掌握了word表格单元格插入列表的方法,我想进一步制作"单元格色块填充"的"色盲图" 但是纵向20*26 ...

  6. 【教学类-34-01】拼图(运动项目-长方块拼图)3*4格子(中班主题《个别化拼图》健康偏艺术-美术)

    背景需求: 一个月的Python纸类学具研究中,我发现个别男孩喜欢把作业中的数字.图案.单元格剪成小块(小卡片) 近年几周,剪条.剪块的孩子人数也慢慢递增.(分发时有点麻烦) 幼儿需求:锻炼手指精细动 ...

  7. 【教学类-13-03】20221118《数字色块图5*7*8-A4横板-横切》(大班主题《》)

    效果展示(一张8个图,对半横切) 打印效果图.中间剪开成2分(白色废纸) 背景需求: 今天领导给了我一大堆打印过的白色A4废纸,终于可以不用浅蓝色好纸了. 前期中3班制作5*7 *8张数字图,幼儿从4 ...

  8. 【教学类-24-01】20230306《数字火车-升序1-9取5填空1》(中班《玩具总动员》)

    成果样式: 背景需求: 中班1位老师需要"排序类学具"供幼儿提高数能力.考虑到无法彩色打印图案,我暂时就设计一些数字.黑白图形(点.字符)的排序.针对中班年龄特点,先做<数字 ...

  9. 【教学类-13-02】20221115《数字色块图5*7*8-A4横板-竖切》(中班主题《》)

    效果展示 打印效果图.中间剪开成2分(浅蓝色纸) 背景需求:  前期中3班制作5*7 *9张数字图,发现三个问题: 1.数量太多,填不完--每人9张调整为每人4张(一张A4两份作业) 2.数字太浅,看 ...

  10. 【教学类-16-01】20221121《数字卡片9*2》(中班)

    作品展示: ​ 打印墨水不够了​ 铅笔描边 ​ 剪开 ​ 每个人是A4 一半的大小 ​ 背景需求: 在数字像素图的基础上,我决定制作1-9的数字卡片,空心数字(华文彩云)涂色,卡片左上角写学号.--目 ...

最新文章

  1. Maven---学习心得---maven的配置文件settings.xml
  2. Modelsim仿真时不能编译`include文件解决办法
  3. nonatomic,assign,copy,retain的区别
  4. Android应用开发基础篇(9)-----SharedPreferences
  5. C# SignalR 即时通讯 聊天室
  6. Centos7.5 安装 mysql 5.7 ( 卸载自带 MariaDB)(实测)
  7. “万”字谏言,给那些想学Python的人,建议收藏后细看!
  8. Pycharm主题基本设置
  9. codeblock图形界面编程
  10. jdk7与jdk8 如何相互切换
  11. Kindle3 字典安装
  12. CF140C New Year Snowmen (#贪心+优先队列)
  13. Oracle11g-linux安装
  14. 【vue】vue中设置路径别名
  15. MaterialEditText库使用详解
  16. 解决win10下栏不显示电池电量图标问题
  17. [报错]RuntimeError: expected scalar type Double but found Float(torch)
  18. oracle安装时创建应答文件,12c 应答方式安装 (二) 创建cdb+pdb+netca
  19. 四川2020年一级计算机报名,2020年9月四川一级计算机报名流程丨报名入口
  20. 《TP基础篇——MTK平台》

热门文章

  1. 2、公司部门的组成 - CEO之公司管理经验谈
  2. kubernetes-v1.20.4 二进制部署-rancher-v2.5.1、harbor
  3. Yearn.Finance(YFI)购买入门
  4. 基于mui框架的会议签到软件
  5. 优梵艺术完成近亿元A轮融资,打造时尚家具品牌...
  6. Unity + HoloLens2性能测试
  7. 邮件欺诈持续威胁企业:500强企业遭到百万美元损失
  8. Ubuntu20.04下载cuda11.3+cuDNN8.2.0,卸载cuda11.6+cuDNN8.4全记录【保姆级教程】
  9. 华为AP开启IPV6
  10. C语言程序设计期末大作业—教师工资管理系统(附程序设计报告)