• 【教学类-32-04】20231013十二生肖4.0(标记+1位数字+排序+左右分类)(大班:《我是中国人》偏科学-数)


    作品展示

    一位数字、汉字对齐排列

     背景需求:

    1、优化教案,参与比赛

    10月份有一个幼儿园原创教案比赛,我把这个活动《十二生肖排排队》上报了。

    2、把两位数序号改成一位数。

    “老师,我觉得猴子最大,他是90”。16号同学大胆回答,然后他又停顿片刻“反过来又是09了”

    因为大班的孩子的镜像视力的不规律性,普遍存在性。所以我最终决定把原来的01,02,……09改成1,2……9。

    3.0版本(序号是2位数)

    4.0版本(1-9是1位数,10-12是2位数)

    ‘’
    3.序号位置对齐

    数字有1位数和2位数,就会数字全部靠左,导致右侧汉字不对齐了。所以我让汉字位置一样,数字全部靠右。

    3.0版本

    4.0版本(图案居左,数字居中右侧,汉字全部在方框下面)

     作品展示

     1.0样式——动物头部方向全部向右,(A4竖版 2份)

    2.0样式——动物头部方向随机向左、或者向右(A4竖版 2份)

    3.0样式——动物头部方向随机向左、或者向右(A4横版 1份)——黑色线框、黑色图案,卡片大,看的清楚,公开课用

    4.0样式(1位数,数字靠右,汉字靠右在方框下面)

    素材准备:

    1、图片准备

    office PPT2013里面有一个图标的功能,内置大量矢量图(图片大小相等) 

    PPt -插入-图表

    输入水果:

    (只有一个,不够用) 

    输入动物(似乎看到了所有的十二生肖)

     龙(需要修图)

    把每个动物的图片另存为“XX.PNG"的样式

    svg另存为png

     2、word准备:

     

     

     3、代码展示:代码

    1. '''
    2. 十二生肖4.0(一页横版1份 动物朝向有的左侧、有的右侧)
    3. 目的:
    4. 1、属相做标记
    5. 2.十二生肖排序01-12
    6. 3、十二生肖分类(向左向右)
    7. 4、单位数学号
    8. 作者:阿夏
    9. 时间:2023年9月28日)
    10. '''
    11. import os
    12. from PIL import Image
    13. num=int(input('生成多少份28人\n'))
    14. Number=int(input('随机抽取几个图片(12个)\n'))
    15. print('----------第1步:提取右向图片的路径------------')
    16. path_right=[]
    17. pr=r"C:\Users\jg2yXRZ\OneDrive\桌面\十二生肖\十二生肖图片(序号+生肖+右侧)"
    18. # 过滤:只保留png结尾的图片
    19. imgs1=os.listdir(pr)
    20. for img1 in imgs1:
    21. if img1.endswith(".png"):
    22. path_right.append(pr+'\\'+img1)
    23. # 所有图片的路径
    24. # print(path_right)
    25. # ['C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片(序号+生肖+右侧)\\01鼠.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片(序号+生肖+右侧)\\02牛.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片(序号+生肖+右侧)\\03虎.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片(序号+生肖+右侧)\\04兔.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十
    26. # 二生肖\\十二生肖图片(序号+生肖+右侧)\\05龙.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片(序号+生肖+右侧)\\06蛇.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片
    27. # (序号+生肖+右侧)\\07马.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片(序号+生肖+右侧)\\08羊.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片(序号+生肖+右侧)\\09猴.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片(序号+生肖+右侧)\\10鸡.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片(序号+生肖+右侧)\\11狗.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片(序号+生肖+右侧)\\12猪.png']
    28. # print(imgs1)
    29. # # ['01鼠.png', '02牛.png', '03虎.png', '04兔.png', '05龙.png', '06蛇.png', '07马.png', '08羊.png', '09猴.png', '10鸡.png', '11狗.png', '12猪.png']
    30. # 新建一个"左侧图片文件夹"
    31. os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\十二生肖\十二生肖图片(序号+生肖+左侧)')
    32. # 制作左右翻转图片 # 再保存一个左边图片文件夹(图片左右翻转)
    33. for i in range(len(path_right)): # 12条路径
    34. tp = Image.open(path_right[i]) # 转换图片
    35. name=path_right[i][-7:] # 提取图片名字"01鼠.png"
    36. tp.transpose(Image.FLIP_LEFT_RIGHT).save(r'C:\Users\jg2yXRZ\OneDrive\桌面\十二生肖\十二生肖图片(序号+生肖+左侧)\{}'.format(name)) # 左右翻转
    37. path_left=[]
    38. pl=r"C:\Users\jg2yXRZ\OneDrive\桌面\十二生肖\十二生肖图片(序号+生肖+左侧)"
    39. # 过滤:只保留png结尾的图片
    40. imgs2=os.listdir(pl)
    41. for img2 in imgs2:
    42. if img2.endswith(".png"):
    43. path_left.append(pl+'\\'+img2)
    44. # 所有图片的路径
    45. # print(path_left)
    46. # ['C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片(序号+生肖+左侧)\\01鼠.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片(序号+生肖+左侧)\\02牛.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片(序号+生肖+左侧)\\03虎.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片(序号+生肖+左侧)\\04兔.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十
    47. # 二生肖\\十二生肖图片(序号+生肖+左侧)\\05龙.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片(序号+生肖+左侧)\\06蛇.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片
    48. # (序号+生肖+左侧)\\07马.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片(序号+生肖+左侧)\\08羊.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片(序号+生肖+左侧)\\09猴.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片(序号+生肖+左侧)\\10鸡.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片(序号+生肖+左侧)\\11狗.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\十二生肖\\十二生肖图片(序号+生肖+左侧)\\12猪.png']
    49. # print(imgs2)
    50. # 左边图片和右边图片的路径合并在一起
    51. path_list=path_right+path_left
    52. print(path_list)
    53. print(len(path_list))# 24条路径
    54. # from PIL import Image
    55. # tp = Image.open(r'D:\Desktop\22.png')
    56. # tp.transpose(Image.FLIP_TOP_BOTTOM).save(r'D:\Desktop\220.png') # 上下翻转
    57. print('----------第2步:新建一个临时文件夹------------')
    58. # 新建一个”装N份word和PDF“的文件夹
    59. os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\十二生肖\零时Word')
    60. print('----------第3步:随机抽取12张图片 ------------')
    61. import docx
    62. from docx import Document
    63. from docx.shared import Pt
    64. from docx.shared import RGBColor
    65. from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
    66. from docx.oxml.ns import qn
    67. import random
    68. import os,time
    69. import docx
    70. from docx import Document
    71. from docx.shared import Inches,Cm,Pt
    72. from docx.shared import RGBColor
    73. from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
    74. from docx.oxml.ns import qn
    75. from docxtpl import DocxTemplate
    76. import pandas as pd
    77. from docx2pdf import convert
    78. from docx.shared import RGBColor
    79. for nn in range(0,num):
    80. doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\十二生肖\十二生肖(A4一份模板深色框).docx')
    81. # # 制作列表
    82. for z in range(1): # 5行组合循环2次 每页两张表
    83. # 从左边图列表和右边图列表中抽取图片(12张图片,可能5个向左、7个向右边)
    84. # 24条里面0和12条是一组,2个里面随机抽1一个,1和13是一组,2个里面随机抽一个…… 抽出12个图片后
    85. r=[]
    86. t=[]
    87. for d in range(int(len(path_list)/2)): # 24
    88. r.append(path_list[d])
    89. r.append(path_list[d+12])
    90. # print(s)
    91. t.append(random.choices(r))
    92. r.clear()
    93. # print(t)
    94. # 去除[[],[],[]]
    95. c=[]
    96. for o in t:
    97. for v in o:
    98. c.append(v)
    99. print(c)
    100. # 再打乱顺序读取12个
    101. figures=random.sample(c,Number) # 12个图片随机写入12个
    102. print(figures)
    103. # 单元格位置3*4格
    104. bg=[]
    105. for x in range(0,4): # 4行
    106. for y in range(0,3): # 3列
    107. ww='{}{}'.format(x,y)
    108. bg.append(ww)
    109. print(bg)
    110. # ['00', '01', '00', '01', '00', '01', '00', '01', '00', '01', '00', '01', '00', '01', '00', '01']
    111. table = doc.tables[z] # 4567(8)行
    112. for t in range(len(bg)): # 02
    113. pp=int(bg[t][0:1])
    114. qq=int(bg[t][1:2])
    115. # print(p)
    116. k=figures[t]
    117. # k2= figures[t][-7:-4]
    118. k2=figures[t][-7:-4]
    119. if k2[0]=='0':
    120. k3=' '+k2[1]+' '+k2[2:]
    121. else:
    122. k3=' '+k2[0:2]+' '+k2[2:]
    123. print(pp,qq,k)
    124. print(k2)
    125. # 写入图片
    126. run=doc.tables[z].cell(pp,qq).paragraphs[0].add_run() # 在第1个表格中第2个单元格内插入国旗
    127. run.add_picture('{}'.format(k),width=Cm(4.),height=Cm(4.))
    128. table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.LEFT #居中
    129. # 写入序号和生肖名称
    130. run=table.cell(pp,qq).paragraphs[0].add_run(k3) # 在单元格0,0(第1行第1列)输入第0个图图案
    131. run.font.name = '黑体'#输入时默认华文彩云字体
    132. # run.font.size = Pt(46) #输入字体大小默认30号 换行(一页一份大卡片
    133. run.font.size = Pt(39) #输入字体大小默认30号 一行里(可以一页两份)
    134. run.font.bold= True #是否加粗
    135. run.font.color.rgb = RGBColor(0,0,0) #数字小,颜色深0-255
    136. # paragraph.paragraph_format.line_spacing = Pt(180) #数字段间距
    137. r = run._element
    138. r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
    139. table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
    140. doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\十二生肖\零时Word\{}.docx'.format('%02d'%nn))
    141. from docx2pdf import convert
    142. # docx 文件另存为PDF文件
    143. inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/十二生肖/零时Word/{}.docx".format('%02d'%nn) # 要转换的文件:已存在
    144. outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/十二生肖/零时Word/{}.pdf".format('%02d'%nn) # 要生成的文件:不存在
    145. # 先创建 不存在的 文件
    146. f1 = open(outputFile, 'w')
    147. f1.close()
    148. # 再转换往PDF中写入内容
    149. convert(inputFile, outputFile)
    150. print('----------第4步:把都有PDF合并为一个打印用PDF------------')
    151. # 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
    152. import os
    153. from PyPDF2 import PdfFileMerger
    154. target_path = 'C:/Users/jg2yXRZ/OneDrive/桌面/十二生肖/零时Word'
    155. pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
    156. pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]
    157. pdf_lst.sort()
    158. file_merger = PdfFileMerger()
    159. for pdf in pdf_lst:
    160. print(pdf)
    161. file_merger.append(pdf)
    162. file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/十二生肖/(打印合集)十二生肖4.0上课左右图空格2({}人共{}份).pdf".format(num,num))
    163. file_merger.close()
    164. # doc.Close()
    165. # print('----------第5步:删除临时文件夹------------')
    166. import shutil
    167. shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/十二生肖/零时Word') #递归删除文件夹,即:删除非空文件夹
    168. shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面\十二生肖/十二生肖图片(序号+生肖+左侧)') #递归删除文件夹,即:删除非空文件夹

    4、代码重点:

    把图片的名称,拆分开来,插入1-2个空格

     

      终端运行

     

      

     作品展示:

    教学实践:

    时间:2023年9月6日 15:10-15:45

    班级:大6班

    人数:16人

  • 相关阅读:
    SpringBoot快速入门(黑马学习笔记)
    备战数学建模1——MATLAB矩阵相关
    Java LinkedList
    cesium火箭发射,模型控制,模型动画,模型移动
    了解计算机里非门组成的部分
    linux mysql 安装
    R语言实操记录——导出高清图片(矢量图)
    学习python第7天
    全球名校AI课程库(45)| AMMI · 几何深度学习课程『Geometric Deep Learning』
    《30天吃掉那只 TensorFlow2.0》 2-3 自动微分机制
  • 原文地址:https://blog.csdn.net/reasonsummer/article/details/133807867