【教学类-58-05】黑白三角拼图05(2-10宫格,每个宫格随机1张-6张,带空格纸,1页3张黑白3张白卡)

2024-05-27 07:36

本文主要是介绍【教学类-58-05】黑白三角拼图05(2-10宫格,每个宫格随机1张-6张,带空格纸,1页3张黑白3张白卡),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

534f4a834847419d917946f213b9af48.png

背景需求:

57851633bd6e4efb970dca1ad7d1bc24.png

【教学类-58-04】黑白三角拼图04(2-10宫格,每个宫格随机1张-6张,带空格纸,1页6张黑白,1张6张白卡)-CSDN博客文章浏览阅读582次,点赞16次,收藏3次。【教学类-58-04】黑白三角拼图04(2-10宫格,每个宫格随机1张-6张,带空格纸,1页6张黑白,1张6张白卡)https://blog.csdn.net/reasonsummer/article/details/139201646

原来是6张图卡一页,6张白卡一页

现在我想要一页上“左侧3张图卡,右侧3张白卡”,这样便于切割成三张,便于幼儿涂色。

 

代码展示

'''
黑白三角2宫格-6宫格,每个宫格1分6图-6份36图1图1空
随机图片
AI对话大师,阿夏
2024年5月24日'''
import os 
from PIL import Image, ImageDrawfor ys in range(1,12):     # 每个宫格提供几张(1张6页path = r'C:\Users\jg2yXRZ\OneDrive\桌面\黑白三角'new = path + fr'\1-10宫格组合图片'os.makedirs(new, exist_ok=True)# ys=6 # 一种2页f=6 # 一页6张b=400 # 画布大小# g=5 # 宫格数by=10 # 边距# for a in range(1,ys+1):for g in range(2,11):     for c in range(1,f+1):# 创建bxb的画布canvas = Image.new('RGB', (b,b), (255, 255, 255))draw = ImageDraw.Draw(canvas)# 定义表格的行数和列数、边距rows = gcols = gmargin = by# 计算单元格的宽度和高度cell_width = (b - 2 * margin) // colscell_height = (b - 2 * margin) // rows# 绘制表格的竖直线for i in range(cols + 1):x = margin + i * cell_widthdraw.line([(x, margin), (x, b - margin)], fill=(0, 0, 0), width=2)# 绘制表格的水平线for i in range(rows + 1):y = margin + i * cell_heightdraw.line([(margin, y), (b - margin, y)], fill=(0, 0, 0), width=2)# 保存画布mb =f'{g:03d}格{c:03d}02模板{c:03d}.png'canvas.save(new + fr'\{mb}')# a+=1print('---2、计算三个坐标点的黑色三角形不重复图案有几个-------')# 创建一个空列表用于存储单元格的坐标cell_coordinates = []# 计算每个单元格的四个顶点坐标for row in range(rows):for col in range(cols):top_left = (margin + col * cell_width, margin + row * cell_height)top_right = (margin + (col + 1) * cell_width, margin + row * cell_height)bottom_left = (margin + col * cell_width, margin + (row + 1) * cell_height)bottom_right = (margin + (col + 1) * cell_width, margin + (row + 1) * cell_height)# 将四个顶点坐标添加到列表中cell_coordinates.append([top_left, top_right, bottom_left, bottom_right])# print(cell_coordinates)# print(len(cell_coordinates))# 16# [[(0, 0), (400, 0), (0, 400), (400, 400)], [(400, 0), (b, 0), (400, 400), (b, 400)], [(0, 400), (400, 400), (0, b), (400, b)], [(400, 400), (b, 400), (400, b), (b, b)]]import randomimport oscombinations=[]# 存储选取的点,随机生成坐标(样式)排除重复,生成10份样式不同的模版while len(combinations) < f:selected_points = []for points in cell_coordinates:selected_points.append(tuple(random.sample(points, 3)))combinations.append(tuple(selected_points))print(combinations)print(len(combinations))#  10print('---3、制作三个坐标点的黑色三角形(4个)-------')from PIL import Image, ImageDraw# 定义要绘制的坐标点组合for p in range(0,ys):for point_combination in combinations:print(point_combination)# 清空selected_points列表selected_points = []h=1# 遍历每个坐标点组合for combination in point_combination:# 从每个列表中随机选取三个点,并加入到selected_points中selected_points.append(tuple(random.sample(combination, 3)))# 读取图像文件#                创建bxb的画布canvas = Image.new('RGB', (b,b), (255, 255, 255))draw = ImageDraw.Draw(canvas)# 定义表格的行数和列数、边距rows = gcols = gmargin = by# 计算单元格的宽度和高度cell_width = (b - 2 * margin) // colscell_height = (b - 2 * margin) // rows# 绘制表格的竖直线for i in range(cols + 1):x = margin + i * cell_widthdraw.line([(x, margin), (x, b - margin)], fill=(0, 0, 0), width=2)# 绘制表格的水平线for i in range(rows + 1):y = margin + i * cell_heightdraw.line([(margin, y), (b - margin, y)], fill=(0, 0, 0), width=2)# 遍历每个坐标点组合for combination in selected_points:# 绘制填充为黑色的多边形draw.polygon(combination, fill="black")# 保存结果图像canvas.save(new + fr'\{g:03d}格{c:03d}01图纸{c:03d}.png')canvas.close()  # 关闭图像文件# print('---4合并打印------')# 第3步,读取图片写入docx,合并PDFimport os,timefrom docx import Documentfrom reportlab.lib.pagesizes import letterfrom reportlab.pdfgen import canvasfrom PyPDF2 import PdfMergerfrom docx.shared import Cm# 读取123文件夹中的所有图片地址image_folder = newnew_folder = path+r'\零时文件夹'os.makedirs(new_folder, exist_ok=True)image_files = [os.path.join(image_folder, file) for file in os.listdir(image_folder) if file.endswith('.png')]# 每8个图片一组进行处理grouped_files = [image_files[i:i+6] for i in range(0, len(image_files), 6)]print(grouped_files)# 处理每一组图片for group_index, group in enumerate(grouped_files):# 创建新的Word文档doc = Document(path+r'\模板6格.docx')print(group)# 遍历每个单元格,并插入图片for cell_index, image_file in enumerate(group):# 计算图片长宽(单位:厘米)# 插入图片到单元格table = doc.tables[0]cell = table.cell(int(cell_index / 2), cell_index % 2)# 6列两个都是6cell_paragraph = cell.paragraphs[0]cell_paragraph.clear()run = cell_paragraph.add_run()run.add_picture(image_file, width=Cm(9.4), height=Cm(9.4))# 保存Word文档doc.save(os.path.join(new_folder, f'{group_index + 1:03d}.docx'))# 所有docx合并成PDF# 将10个docx转为PDFimport osfrom docx2pdf import convertfrom PyPDF2 import PdfFileMerger# from PyPDF4 import PdfMerger# output_folder = output_folderpdf_output_path = path+fr'\黑白三角1-10宫格随机每款{f*ys}图共{ys}张一黑一白.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'))# 合并零时文件里所有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)time.sleep(2)# 保存合并后的PDF文件merger.write(pdf_output_path)merger.close()import shutil# 删除输出文件夹import timeshutil.rmtree(new_folder)shutil.rmtree(new)time.sleep(2)

虽然调整了代码,但是从1份到12分(2-10宫格)生成自来还是挺慢的。

fcbabf8ff2684a06903a099e172a0bcb.pngfb94f992a77e4c4ba0a00536881bd4d1.pngbf8e4de02cc147bbaec1361b7020dc17.png240c742f85f643e783e4668e749fff04.png

 

这篇关于【教学类-58-05】黑白三角拼图05(2-10宫格,每个宫格随机1张-6张,带空格纸,1页3张黑白3张白卡)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1006838

相关文章

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

AI学习指南深度学习篇-带动量的随机梯度下降法的基本原理

AI学习指南深度学习篇——带动量的随机梯度下降法的基本原理 引言 在深度学习中,优化算法被广泛应用于训练神经网络模型。随机梯度下降法(SGD)是最常用的优化算法之一,但单独使用SGD在收敛速度和稳定性方面存在一些问题。为了应对这些挑战,动量法应运而生。本文将详细介绍动量法的原理,包括动量的概念、指数加权移动平均、参数更新等内容,最后通过实际示例展示动量如何帮助SGD在参数更新过程中平稳地前进。

AI学习指南深度学习篇-带动量的随机梯度下降法简介

AI学习指南深度学习篇 - 带动量的随机梯度下降法简介 引言 在深度学习的广阔领域中,优化算法扮演着至关重要的角色。它们不仅决定了模型训练的效率,还直接影响到模型的最终表现之一。随着神经网络模型的不断深化和复杂化,传统的优化算法在许多领域逐渐暴露出其不足之处。带动量的随机梯度下降法(Momentum SGD)应运而生,并被广泛应用于各类深度学习模型中。 在本篇文章中,我们将深入探讨带动量的随

《教学与管理》

《教学与管理》系国家新闻出版总署批准,面向国内外公开发行的教育类学术期刊。《教学与管理》国际标准刊号ISSN1004-5872,国内统一刊号CN14-1024/G4。 教学与管理来稿注意事项 ■本刊主要设有“理论研究、教育观察、办学改革、学校管理、班级管理、教研活动、教育法制、德育建设、课程建设、教学研究、教学方法、教材研究、教学评价、学法指导、考试研究、比较教育”等栏目。 ■本刊读者对象为

C++入门(05-2)从命令行执行C++编译器_GCC

文章目录 GCC编译器1. 下载MinGW-w64,安装(不推荐)2. 使用MSYS2安装MinGW-w64(推荐)2.1 安装MSYS22.2 初始化和更新2.3 安装MinGW-w64编译器2.3 在MSYS2 Shell中导航到代码目录2.4 使用 g++ 编译2.5 运行可执行文件 GCC编译器 GCC(GNU Compiler Collection)是一个开源编译器集

Differential Diffusion,赋予每个像素它应有的力量,以及在comfyui中的测试效果

🥽原论文要点 首先是原论文地址:https://differential-diffusion.github.io/paper.pdf 其次是git介绍地址:GitHub - exx8/differential-diffusion 感兴趣的朋友们可以自行阅读。 首先,论文开篇就给了一个例子: 我们的方法根据给定的图片和文本提示,以不同的程度改变图像的不同区域。这种可控性允许我们再现

C++入门(05)从命令行执行C++编译器_MSVC

文章目录 1.C++ 编译器2. 常用 C++ 编译器MSVC(Microsoft Visual C++)GCC(GNU Compiler Collection)Clang 3. MSVC 编译器3.1 开发者命令提示符3.2 编译 C++ 代码 1.C++ 编译器 将C++源代码(扩展名为 .cpp )转换成计算机可以运行的可执行程序 编译器会检查代码的语法和语义,生成相应

龙芯+FreeRTOS+LVGL实战笔记(新)——05部署主按钮

本专栏是笔者另一个专栏《龙芯+RT-Thread+LVGL实战笔记》的姊妹篇,主要的区别在于实时操作系统的不同,章节的安排和任务的推进保持一致,并对源码做了改进和优化,各位可以先到本人主页下去浏览另一专栏的博客列表(目前已撰写36篇,图1所示),再决定是否订阅。此外,也可以前往本人在B站的视频合集(图2所示)观看所有演示视频,合集首个视频链接为: 借助RT-Thread和LVGL