【教学类-44-08】20240319 “(幼儿用)数字练习簿1.0”(A4版)

 

 

背景需求:

我一直想把 “(幼儿用)数字练习簿”的内容复刻出来——这里面的字体始终找不到,是一种已经做成图片的手写数字字体

ffdd1626795947079b8322fcc21bb88b.png

素材准备:

1、买了一本(幼儿用)数字练习簿,把每一页扫描

5878646a108446ca82ec06e013dd3f18.png

25c802bd41724de18b9c9a9306dba6a0.png

9cc7d93e542a443fad7cf3f47bbc7b77.png

测量本子大小

d833b34c09884a759d815167c74cefba.png

本子长宽:25.8CM*18.5CM,比A4纸小

d4aaaf3bf06f4e078a65db24cd7dda01.png查看打印纸尺寸,发现并没有正好大小的打印纸(我园常用的A4,少量有A3、B5),其他纸型号也没有。

所以我将先试试将已扫描的字帖图片写入A4大小的纸张。

2、纸张模板

 

133bf6d758654769b571931937d373fb.png

ffc1e88133ed44159cc2ba94fc76fb0b.png

26fa8f774444441683162a67fceda22b.png

3、将彩色图片变成黑白图片,提升亮度

'''
目的,制作《幼儿用数字描字簿》整本A4
作者:AI对话大师
时间:2024年3月19日
'''from PIL import Image, ImageEnhance, ExifTagsimport ospath = r'C:\Users\jg2yXRZ\OneDrive\桌面\20240116幼儿用数字练习簿'# 创建新建的234文件夹
new_folder = os.path.join(path, '01黑白图片')
if not os.path.exists(new_folder):os.makedirs(new_folder)# 读取原始图片文件夹内的所有图片
folder_path = os.path.join(path, '00原始图片')
for filename in os.listdir(folder_path):if filename.endswith('.png') or filename.endswith('.jpg'):# 打开图片image_path = os.path.join(folder_path, filename)img = Image.open(image_path)# 纠正图片方向for orientation in ExifTags.TAGS.keys():if ExifTags.TAGS[orientation] == 'Orientation':breakif img._getexif() is not None:exif = dict(img._getexif().items())if exif[orientation] == 3:img = img.transpose(Image.ROTATE_180)elif exif[orientation] == 6:img = img.transpose(Image.ROTATE_270)elif exif[orientation] == 8:img = img.transpose(Image.ROTATE_90)# 将彩色图片转换为灰色gray_img = img.convert('L')# 提升亮度enhancer = ImageEnhance.Brightness(gray_img)enhanced_img = enhancer.enhance(1.1)  # 提升亮度# # 提升对比度# enhancer = ImageEnhance.Contrast(gray_img)# enhanced_img = enhancer.enhance(4.0)  # 提升对比度# 保存图片到新建的01黑白图片文件夹内new_image_path = os.path.join(new_folder, filename)enhanced_img.save(new_image_path)print('图片处理完成,结果已保存到01黑白图片文件夹内。')

d9ab44e23d774795a7fe3535c5f8e548.pngf1c7ad4f17854320a54170d57c5b4d1e.pngde12b7ca64564519b4f61de41884c420.png

a78cc80b4c794f948643ecd2f30aeadb.png

扫描切割时,图案可能会倾斜,留边,a9795c1b8c6c4a0eb36cfd34b70d0acc.png

5521ceae93a8447693537856046807e4.png4、用PS把每张图片的边缘修成白色。

e54b52cd1f1848339d0d1dfb021eb660.png1869950e06bd4bbcaabf2d1d10eaf23b.pngf01b83ab3e644bafb6b40999ff3110ea.png3126d6fa17a24a75a140035b8202b1dc.png

把图片修白后,把文件名增加PS字样,以免再次生成时,修过的图片被覆盖(也可直接将00原始图片修图)eff7b80458144a67b0a3aa0d4825dfdd.png

19d161a7ba9940b6a29074eb69c549c6.png

 

5、将图片导入docx模板,然后批量生成单页的A4字体

 

代码展示:


print('------2、黑白数字贴图片写入word模板,------')
from docx import Document
from docx.shared import Cm
from docx2pdf import convert
import os,time# 读取111文件夹内234文件夹中的所有图片image_folder =path+r'\01黑白图片(PS)'
images = [os.path.join(image_folder, img) for img in os.listdir(image_folder) if img.endswith('.jpg')]
print(images)# 读取111文件夹内123.docx文件
docx_path =path+r'\幼儿用数字练习簿.docx'
doc = Document(docx_path)
table = doc.tables[0]  # 获取第一个表格# 保存处理后的Word文档到“零食文件夹”中
output_folder = path + r'\零时文件夹'
# 读取output_folder文件夹里所有的docx文件
output_docs = [os.path.join(output_folder, doc) for doc in os.listdir(output_folder) if doc.endswith('.docx')]
print(output_docs)if not os.path.exists(output_folder):os.makedirs(output_folder)# 插入图片到表格中并设置大小、居中
for idx, img_path in enumerate(images):cell = table.cell(0, 0)cell.paragraphs[0].add_run().add_picture(img_path, width=Cm(29.7), height=Cm(20.9))cell.paragraphs[0].alignment = 1  # 居中print(idx)# 1,2,3doc.save(os.path.join(output_folder, f'{idx}.docx'))
time.sleep(2)print('------3、多个word合并保存为一个PDF------')from PyPDF2 import PdfFileMerger
import os# 指定output_folder路径
output_folder = path + r'\零时文件夹'# 创建PdfFileMerger对象
pdf_merger = PdfFileMerger()# 遍历output_folder中的所有docx文件
for filename in os.listdir(output_folder):if filename.endswith('.docx'):docx_path = os.path.join(output_folder, filename)pdf_path = os.path.splitext(docx_path)[0] + '.pdf'  # 对应的PDF文件路径convert(docx_path)  # 转换为PDFpdf_merger.append(pdf_path)  # 将PDF文件添加到PdfFileMerger中time.sleep(1)# 输出PDF文件路径
output_pdf = path + r'\幼儿用数字练习簿1.0.pdf'# 写入合并后的PDF文件
with open(output_pdf, 'wb') as out:pdf_merger.write(out)    # 关闭合并后的PDF文件pdf_merger.close()print('PDF合并完成。')print('------4、删除零时文件夹------')
# 删除“零食文件夹”time.sleep(2)import  shutil
# 删除output_folder文件夹
shutil.rmtree(output_folder) # 递归删除文件夹,即:删除非空文件夹print('操作完成。')

bdc3ad7ce3f0434e9643e36637f48700.png

356de9fd135a47c39401de53295204f8.png

 

375f8354f3c04f4c8d7f689b377abdcc.png

8968def5e7b145009a8e300be3257ce3.png3d77c4a03ad044dfbba2a21752042a0c.png4f0800e75c7c4f8ea9b8a399039fa1f1.png

先打印一份看看文字灰度是否适合幼儿书写,在制作2.0装订版本的,就是第一张纸包含P1、P2、P31、P32,第二章纸包含P3、P4、P29、P30

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/756452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 通过 microsoft graph 调用outlook(二)

这次提供一些基础调用方式API 一 POM文件 <!-- office 365 --><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>32.1.3-jre</version></dependency><dependency>&…

网络编程:多点通信+域套接字

一、多点通信 1.网络属性 getsockopt和setsockopt int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen); int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen); 功能&#xff1a;获取或设置套接字…

微信小程序登录后根据code获取APP_ID和APP_SECRET与火狐信息

话不多说&#xff0c;直接上代码。 session_key是与用户微信客户端之间通信的密钥&#xff0c;获取用户信息时会用到。 调用&#xff1a;getSessionKeyAndOpenId方法传入code值&#xff0c;返回openid与session_key&#xff0c; 这里的&#xff1a; appid: 应用唯一标识&am…

SSH服务

目录 一. 熟悉SSH服务 1.1 何为SSH协议 1.2 SSH服务优点 1.3 常见的SSH协议 1.4 SSH服务的功能 1.5 为何使用SSH服务 1.6 SSH服务的工作原理 1.6.1 公钥传输原理 1.6.2 ssh加密通讯原理 1.7 SSH服务的最佳应用场景 1.8 SSH服务远程登录的方式 1.8.1 方法一&#…

自动驾驶决策 - 规划 - 控制 (持续更新!!!)

总目录 Frenet与Cartesian坐标系 Apollo基础 - Frenet坐标系 车辆模型 车辆运动学和动力学模型 控制算法 PID控制器轨迹跟随实现 Pure Pursuit控制器路径跟随 路径跟踪算法Stanley 实现 c 无人驾驶LQR控制算法 c 实现 MPC自动驾驶横向控制算法实现 c 双环PID控制详细讲解 …

【DL经典回顾】激活函数大汇总(二十六)(Identity附代码和详细公式)

激活函数大汇总&#xff08;二十六&#xff09;&#xff08;Identity附代码和详细公式&#xff09; 更多激活函数见激活函数大汇总列表 一、引言 欢迎来到我们深入探索神经网络核心组成部分——激活函数的系列博客。在人工智能的世界里&#xff0c;激活函数扮演着不可或缺的…

大模型面试题最全总结,没有一道是送分题。。。

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂同学、参加社招和校招面试的同学&#xff0c;针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 今天分享…

3月19日做题

[NPUCTF2020]验证&#x1f40e; if (first && second && first.length second.length && first!second && md5(firstkeys[0]) md5(secondkeys[0]))用数组绕过first1&second[1] 这里正则规律过滤位(Math.) (?:Math(?:\.\w)?) : 匹配 …

串口123

1.开启时钟 把需要使用的USART和GPIO的时钟打开 2.GPIO初始化 把TX配置成复用输出&#xff0c;RX配置成输入 3.配置USART 直接使用一个结构体即可将所有参数配置完成 4.开关控制 如果需要仅发送的功能&#xff0c;就直接开启USART&#xff0c;初始化到此结束 如果还需要接收…

优化器算法SGD、Adam、AdamW等

文章目录 SGDSGD with momentumSGD with Nesterov AccelerationAdaGradRMSpropAdaDeltaAdamAdamW参考资料 假设有&#xff1a; 待优化的目标函数为 f ( w ) f(w) f(w)&#xff0c;使用优化算法来最小化目标函数 f ( w ) : a r g m i n w f ( w ) f(w):argmin_wf(w) f(w):argmin…

获取指定路径下,所有指定后缀文件列表

要获取指定路径下所有指定后缀的文件列表&#xff0c;你可以使用Python的os和glob模块。下面是一个简单的示例&#xff0c;展示了如何获取指定路径下所有.txt后缀的文件列表&#xff1a; import os import globdef get_files_with_extension(directory, extension):"&quo…

vivado 布线、路线_设计

路由 Vivado路由器对放置的设计执行路由&#xff0c;并对路由设计&#xff0c;以解决保留时间冲突。Vivado路由器从放置的设计开始&#xff0c;并尝试路由所有网络。它可以从已放置的未布线、部分布线或完全布线的设计。对于部分路由的设计&#xff0c;Vivado路由器使用现有的…

Unittest框架及自动化测试实现流程

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Unittest框架介绍 Unittest框架是Python中一个标准的库中的一个模块&#xff0c;该模块包括许多…

红与黑(c++题解)

题目描述 有一间长方形的房子&#xff0c;地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上&#xff0c;只能向相邻的黑色瓷砖移动。请写一个程序&#xff0c;计算你总共能够到达多少块黑色的瓷砖。 输入格式 包括多个数据集合。每个数据集合的第一行是…

【Mysql】面试题汇总

1. 存储引擎 1-1. MySQL 支持哪些存储引擎&#xff1f;默认使用哪个&#xff1f; 答&#xff1a; MySQL 支持的存储引擎包括 InnoDB、MyISAM、Memory 等。 Mysql 5.5 之前默认的是MyISAM&#xff0c;Mysql 5.5 之后默认的是InnoDB。 可以通过 show engines 查看 Mysql 支持…

外包2月,技术退步惊现!大专生逆袭大厂,全靠这份神秘资料!

大家好&#xff0c;我是一名大专生&#xff0c;19年通过校招进入湖南某软件公司&#xff0c;从事功能测试工作已近4年。今年8月&#xff0c;我意识到长期舒适的环境让我变得不思进取&#xff0c;技术停滞不前&#xff0c;甚至因此失去了谈了2年的女朋友。我下定决心&#xff0c…

金蝶云星空——插件dll重新发布报错:鏃犳硶鏄剧ず椤甸潰锛屽洜涓哄彂鐢熷唴閮ㄦ湇鍔″櫒閿欒銆�

项目场景&#xff1a; 金蝶插件开发 问题描述 今天更新了插件dll然后重启IIS金蝶就报如下错误&#xff1a; 解决方案&#xff1a; 折腾了一天结果发现是给自己挖坑了&#xff0c;这次更新我担心插件代码有问题就把原dll重命名了然后把最新dll更新到金蝶bin文件中&#xff0c…

vue实现双向绑定原理深度解析

1. vue双向绑定应用场景 Vue的双向绑定机制主要体现在以下几个方面: 表单输入:在表单输入中,Vue的双向绑定机制非常有用。通过v-model指令,可以将表单元素的值与Vue实例中的数据进行双向绑定,当用户在表单输入框中输入内容时,数据会自动更新,反之,当数据发生变化时,输…

【DBC专题】-11-使用Cantools将CAN/CANFD DBC自动生成C语言代码

目录 1 安装Python和Cantools 1.1 查看Python已安装的Package包 1.2 在Python中安装Cantools插件包 1.3 获取更多Cantools工具的更新动态 2 经典CAN/CANFD DBC自动生成C语言代码 2.1 批处理文件CAN_DBC_To_C.bat内容说明 2.2 经典CAN/CANFD DBC文件要求 2.3 如何使用生…

网站引用图片但它域名被墙了或者它有防盗链,我们想引用但又不能显示,本文附详细的解决方案非常简单!

最好的办法就是直接读取图片文件&#xff0c;用到php中一个常用的函数file_get_contents(图片地址)&#xff0c;意思是读取远程的一张图片&#xff0c;在输出就完事。非常简单&#xff5e;话不多说&#xff0c;直接上代码 <?php header("Content-type: image/jpeg&quo…