【教学类-36-09】20240622钓鱼(通义万相)-A4各种大小的鱼

背景需求:

用通义万相获得大量的简笔画鱼的图片,制作成不同大小,幼儿用吸铁石钓鱼的纸片(回形针),涂色、排序等

补一张通义万相的鱼图

素材准备

(一)优质的鱼图片

(二)剔除的鱼(两个眼睛、很多鱼鳍、不是鱼的造型)

(三)模板

模板4条(14.2*7.9)

模板9条(9.5*5.23)

模板10条(9.66*5.62)

把模板里面的图片清空,

代码展示:


'''
02钓鱼(通义鱼类图片)3款模板,4张、9张、10张)
作者:AI对话大师,阿夏
2024年6月9日'''
import os
import time
from docx import Document
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
from PyPDF2 import PdfMerger
from docx.shared import Cm
import random, itertoolsh=[4,9,10]
size=[['14.2','7.9'],['9.5','5.23'],['9.66','5.62']]
gz=[2,3,2]for v in range(len(h)):# 文件信息path = r'C:\Users\jg2yXRZ\OneDrive\桌面\20240618鱼'image_folder = path + r'\02鱼'new_folder = path + r'\零时文件夹'os.makedirs(new_folder, exist_ok=True)# 读取图片image_file = [os.path.join(image_folder, file) for file in os.listdir(image_folder) if file.endswith('.png')]image_files = random.sample(image_file, len(image_file))# 图片数量g=int(h[v])# 图片按照4张一组分割grouped_files = [image_files[i:i + g] for i in range(0, len(image_files),  g)]print(len(grouped_files))# 处理每一组图片for group_index, group in enumerate(grouped_files):# 创建新的Word文档doc = Document(path+fr'\模板{g}条.docx')# print(group)# 遍历每个单元格,并插入图片for cell_index, image_file in enumerate(group):# 计算图片长宽(单位:厘米)        # 插入图片到单元格table = doc.tables[0]cell = table.cell(int(cell_index / int(gz[v])), cell_index % int(gz[v]))# 如果第一行有4个格子,两个数字都写4cell_paragraph = cell.paragraphs[0]cell_paragraph.clear()run = cell_paragraph.add_run()run.add_picture(image_file, width=Cm(float(size[v][0])), height=Cm(float(size[v][1])))# 保存Word文档doc.save(os.path.join(new_folder, f'{group_index + 1:03d}.docx'))# 将N个docx转为PDFimport osfrom docx2pdf import convertfrom PyPDF2 import PdfFileMergerimport time  pdf_output_path = path+fr'\\钓鱼{g}图.pdf'# 将所有DOCX文件转换为PDFfor docx_file in os.listdir(new_folder):if docx_file.endswith('.docx'):docx_path = os.path.join(new_folder, docx_file)convert(docx_path, docx_path.replace('.docx', '.pdf'))time.sleep(20)            # 图片比较大,多保存几秒# 合并“零时文件”里所有PDF文件merger = PdfFileMerger()for pdf_file in os.listdir(new_folder):if pdf_file.endswith('.pdf'):pdf_path = os.path.join(new_folder, pdf_file)merger.append(pdf_path)# 保存合并后的PDF文件merger.write(pdf_output_path)time.sleep(10)  # 图片比较大,多保存几秒merger.close()# 删除输出文件夹   import shutil    shutil.rmtree(new_folder)

结果

钓鱼4图:28张*4=112,实际110,所以空了2格

钓鱼9图:13张*9=117,实际110,所以空了7格

钓鱼10图:11张*10=110,实际110,所以空了0格

我发现:9图和10图的尺寸大小差不多,所以只要大一套10图就可以了。

那么最好再做一套图片更大的模版。

于是我做了模版2条

效果是一页上两条不一样的大鱼,最下面10条格子里放两条不一样的小鱼。

代码展示


'''
02钓鱼(通义鱼类图片,模板2图(2个大图2个小图)
作者:AI对话大师,阿夏
2024年6月22日'''import osprint('----------第1步:提取所有的幼儿照片的路径------------')
# 文件信息
folder_path = r'C:\Users\jg2yXRZ\OneDrive\桌面\20240618鱼'
ppp =folder_path + r'\02鱼'
qqq = folder_path+r'\零时Word'
os.makedirs(qqq , exist_ok=True)paths=[]
# 过滤:只保留png结尾的图片 31张(多几张备用)
imgs=os.listdir(ppp)
for img in imgs:if img.endswith(".png"):paths.append(ppp+'\\'+img)
# 所有图片的路径
print(paths)
# 提取动物名字倒数第4个字之前的动物名字
print(imgs)print('----------第3步:随机抽取12张图片 ------------')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.enum.text import WD_VERTICAL_ALIGNMENT
# from docx.enum.table import WD_CELL_VERTICAL_ALIGNMENT         #用来设置单元格垂直对齐方式
from docx.oxml.ns import qnfrom docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColorpic=['00','10','20','21']
long=['19.32','19.32','9.66','9.66']
wide=['11.24','11.24','5.62','5.62']
# 每4个图片一组进行处理path=[]
grouped_files = [paths[i:i+2] for i in range(0, len(paths), 2)]
for g in grouped_files:p=g*2path.append(p)print(path)
print(len(path))
# 55for nn in range(0,int(len(path))):      # 读取图片的全路径  的数量 31张doc = Document(folder_path+r'\模板2条.docx')table = doc.tables[0]          # 4567(8)行for l in range(len(long)):# 单元格坐标a=int(pic[l][0])b=int(pic[l][1])figures=path[nn][l]           # 图片的全路径的第一张 
## 写入1张大图run=doc.tables[0].cell(a,b).paragraphs[0].add_run()        # # 图片位置 第一个表格的0 3 插入照片run.add_picture(r'{}'.format(figures),width=Cm(float(long[l])),height=Cm(float(wide[l])))table.cell(a,b).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中 doc.save(qqq+r'\{}.docx'.format('%02d'%nn))   from docx2pdf import convert# docx 文件另存为PDF文件inputFile = qqq+fr'\{nn:02d}.docx'  # 要转换的文件:已存在outputFile = qqq+fr'\{nn:02d}.pdf'  # 要生成的文件:不存在# 先创建 不存在的 文件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 =  qqq
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(folder_path+fr"\钓鱼2图({len(path)}人共{len(path)}份).pdf")
file_merger.close()
# doc.Close()# print('----------第5步:删除临时文件夹------------')    
import shutil
shutil.rmtree(qqq) #递归删除文件夹,即:删除非空文件夹

所以我准备打印三款大小的鱼

实际就打印两份:

1、考虑到幼儿的兴趣是钓鱼,所以鱼图片数量要多,(吸铁石瞬间就能吸走很多回形针)

2、图片数量多,为了节省纸张,就需要鱼小一点

(1)但图片太小,回形针不一定能卡上

(2)图片多,卡回形针需要很长时间(图片大点,让孩子们自己插回形针)

(3)而且图片小,容易满地碎纸。收拾不便利。

3、所以第一次实验,还是投放三种大小——19、14、9CM。

第一款19的(4图)26张,准备打印15张=60条

第二款14+9(2图*2)55张,准备打印20张=80条

合计140张。29平均每人5条

4、最好一次能钓完拿光,否则小碎片太多,我也没地方存放。

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

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

相关文章

獭崎酱酒:传承百年酱香,品味经典之选

在中国白酒文化中,酱香型白酒以其独特的风味和精湛的酿造工艺,一直受到广大酒友的青睐。而在众多酱香型白酒品牌中,獭崎酱酒以其传承百年的酱香工艺和高品质的产品,成为了众多酒友心中的经典之选。    | | | |–|–| | | | 百…

英伟达能保住全球市值第一的桂冠吗?

内容提要 《巴伦周刊》认为,英伟达市值的迅速上涨是该公司可能难以保持市值第一桂冠的关键原因。另一个担忧是,英伟达的崛起主要基于一项单一技术——为人工智能应用提供动力的芯片和平台。一些人担心,如果购买英伟达产品的公司无法从投资中…

《机器学习》读书笔记:总结“第3章线性模型”中的概念

💠线性模型(linear model) 线性模型(linear model) 试图学得一个通过属性的线性组合来进行预测的函数,即: f ( x ) w 1 x 1 w 2 x 2 . . . w d x d b f(\bold{x})w_1x_1w_2x_2...w_dx_db f(x)w1​x1​w2​x2​...wd​xd​b 向量形式写…

JAVA复习4

目录 44、定义 int x5; 执行 int yx; 和 xy;,x 和 y 分别为( B )。 45、下列内容描述错误的是( C )。 46、以下 Java 语句在编译时不通过的是 (A) 47、在 Java 中,Scanner 类提供控制台获取键盘输入的功…

idea配置本地maven

软件名地址链接说明MavenMaven – Download Apache Maven依赖管理 下载bin.zip 环境变量 测试安装 修改配置文件 本地依赖存储位置 新建文件夹 修改配置 国内镜像源 <mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>ali…

Scrivener v3 解锁版安装教程 (写作辅助软件)

前言 Scrivener&#xff0c;一个多功能的写作软件&#xff0c;被世界各地的作家广泛采用&#xff0c;从小说家到剧本家&#xff0c;再到非小说类作家和学术研究者&#xff0c;它的用户群跨越了广泛的领域&#xff0c;包括学生、法律专业人士、记者和翻译。这个软件非常注重用户…

HTML(18)——浮动

标准流 标准流也叫文档流&#xff0c;指的是标签在页面中默认的排布规则&#xff0c;例如&#xff1a;块元素独占一行&#xff0c;行内元素可以一行显示多个 浮动 作用&#xff1a;让块级元素水平排列 属性名&#xff1a;float 属性值 left&#xff1a;左对齐right&#…

颠覆传统编程:用ChatGPT十倍提升生产力

我们即将见证一个新的时代&#xff01;这是最好的时代&#xff0c;也是最坏的时代&#xff01; 需求背景 背景&#xff1a; 平时会编写博客&#xff0c;并且会把这个博客上传到github上&#xff0c;然后自己买一个域名挂到github上。 我平时编写的博客会有一些图片来辅助说明的…

Docker网络介绍

网络是虚拟化技术中最复杂的部分&#xff0c;也是Docker应用中的一个重要环节。 Docker中的网络主要解决容器与容器、容器与外部网络、外部网络与容器之间的互相通信的问题。 这些复杂情况的存在要求Docker有一个强大的网络功能去保障其网络的稳健性。因此&#xff0c;Docker…

【Linux】了解冯诺伊曼体系结构

文章目录 冯诺依曼体系结构概念冯诺依曼体系结构的推导过程理解冯诺依曼体系 冯诺依曼体系结构概念 冯诺依曼结构是现代计算机发展所遵循的基本结构形式之一&#xff0c;其特点是“程序存储&#xff0c;共享数据&#xff0c;顺序执行”。冯诺依曼结构消除了原始计算机体系中&a…

PCDViewer-5.0.0——开启漫游的世界

在点云相关的研发和生产中&#xff0c;按Pose进行场景漫游是一个十分有用的功能&#xff0c;它可以快速地检查SLAM建图质量或点云编辑效果。用 ros rviz进行点云漫游是一项不错的选择&#xff0c;但它存在的一定的开发门槛&#xff0c;而且需要安装额外的资源。 PCDViewer-5.0.…

物理隔离状态下,如何保障数据单向导入的安全性?

为了保护企业的核心数据&#xff0c;像一些涉密行业会通过物理隔离方式&#xff0c;将网络隔离成内网和外网&#xff0c;比如军工、党政、生物医药、金融等行业&#xff0c;网络隔离后会存在外网数据单向导入内网&#xff0c;内网数据单向导出外网等交互需求。在实施数据单向导…

Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!

代码仓库 会同步代码到 GitHub https://github.com/turbo-duck/flink-demo 当前章节 继续上一节的内容&#xff1a;https://blog.csdn.net/w776341482/article/details/139875037 上一节中&#xff0c;我们需要使用 nc 或者 telnet 等工具来模拟 Socket 流。这节我们写一个 …

36.Http协议的设计与解析

Http协议比Redis协议复杂的多,如果程序员自己去实现,工作量大。 Netty已经把Http协议的编解码器实现好了,只需要简单的配置就可以使用。 做一个http的服务端需要HttpServerCodec。 看它继承的父类: 结合了两个类: HttpRequestDecoder(入站处理器extends Channelnbound…

【网络安全常用术语解读 :什么是0day、1day、nday漏洞】

脆弱性攻击的时间窗被称作脆弱性窗口。通常情况下&#xff0c;一个安全漏洞的时间越久&#xff0c;攻击者就会有更多的机会去攻击它。 2. 0day 漏洞 0天漏洞&#xff0c;也被称作"零日漏洞"&#xff0c;是指尚未由供应商公布的缺陷&#xff0c;表示攻击者已知晓该缺…

FlowUs2024重磅革新预告:RAG技术赋能『问问AI』,笔记变现新纪元等你开启!

&#x1f389; 在FlowUs的广阔天地间&#xff0c;知识的边界被无限拓展&#xff0c;引领着一场场创新与收获的庆典&#xff01;&#x1f680; 随着一年间不断的精进与革新&#xff0c;FlowUs与众多用户并肩前行&#xff0c;在追求极致体验的道路上迈出坚实步伐。步入2024年&am…

WordPress项目教程:自动采集并发布,让你轻松实现网站内容更新

随着互联网的发展&#xff0c;越来越多的人开始关注自己的个人网站&#xff0c;通过网站展示自己的才华、分享知识、推广产品等。然而&#xff0c;个人网站的运营并非易事&#xff0c;尤其是内容更新方面。为了解决这个问题&#xff0c;今天我们将为大家推荐一款WordPress插件主…

minio直接通过地址访问无需服务器转发

背景 做网站有些图片、视频、js等资源&#xff0c;没有什么变化&#xff0c;想在网站上直接使用&#xff0c;前端拿到地址可直接访问获得&#xff0c;而不是通过后台转一道再获得&#xff0c;折腾了半天访问不到&#xff0c;从网上找资料挨个试&#xff0c;也没完全解决&#…

云计算期末综合测试题

云计算综合测试题 单选题填空题判断题简答题 单选题 这里选择题&#xff0c;直接以填空题展示&#xff0c;并给出解析 Bigtable是&#xff08;Google&#xff09;开发的分布式存储系统 解析&#xff1a;分布式结构化数据表Bigtable是Google基于GFS和Chubby开发的分布式存储系统…

君子小人的格局、境界

子曰&#xff1a;君子怀德&#xff0c;小人怀土&#xff1b;君子怀刑&#xff0c;小人怀惠。 直译&#xff1a;君子怀念道德&#xff0c;小人怀念乡土&#xff1b;君子关心法度&#xff0c;小人关心恩惠。 这里的君子与小人只是体现格局、境界的不同&#xff1b; 君子怀的是德…