【教学类-09-07】20240401细线迷宫图02+箭头图片(A4横版一页-2份竖版)

2024-04-03 08:28

本文主要是介绍【教学类-09-07】20240401细线迷宫图02+箭头图片(A4横版一页-2份竖版),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作品展示

5bdc0c4430a64891914923f5d6f6a575.png

 作品展示

59020178022e44168f619c2d19c3fd5d.png

09b498d04d7c41a09b1368f58cf069d3.png

word模板

7189b6311c4a4b14bdfb2350f2087465.png

 

b715aa0845e847faaabef7837a43b0ba.png

重点说明

3df4b9e8065243e599fc8f9d9fae1704.png

 

代码展示

'''
批量制作细线条的迷宫图(A4横板一面2张竖版)+箭头图片
作者:
1、落难Coder https://blog.csdn.net/u014297502/article/details/124839912
2、AI对话大师
3、阿夏
作者:2024年4月3日
'''num=int(input('几人(30人)\n'))print('-----------1、 生成细线迷宫-----------')
import sys
import matplotlib.pyplot as plt
from random import randint
import os# 保存多少张图? 一人2张图
for i in range(num*2):WIDTH  = 15HEIGHT = 21sys.setrecursionlimit(WIDTH * HEIGHT)def initVisitedList():visited = []for y in range(HEIGHT):line = []for x in range(WIDTH):line.append(False)visited.append(line)return visiteddef drawLine(x1, y1, x2, y2):plt.plot([x1, x2], [y1, y2], color="black")def removeLine(x1, y1, x2, y2):plt.plot([x1, x2], [y1, y2], color="white")def get_edges(x, y):result = []result.append((x, y, x, y+1))result.append((x+1, y, x+1, y+1))result.append((x, y, x+1, y))result.append((x, y+1, x+1, y+1))return resultdef drawCell(x, y):edges = get_edges(x, y)for item in edges:drawLine(item[0], item[1], item[2], item[3])def getCommonEdge(cell1_x, cell1_y, cell2_x, cell2_y):edges1 = get_edges(cell1_x, cell1_y)edges2 = set(get_edges(cell2_x, cell2_y))for edge in edges1:if edge in edges2:return edgereturn Nonedef initEdgeList():edges = set()for x in range(WIDTH):for y in range(HEIGHT):cellEdges = get_edges(x, y)for edge in cellEdges:edges.add(edge)return edgesdef isValidPosition(x, y):if x < 0 or x >= WIDTH:return Falseelif y < 0 or y >= HEIGHT:return Falseelse:return Truedef shuffle(dX, dY):for t in range(4):i = randint(0, 3)j = randint(0, 3)dX[i], dX[j] = dX[j], dX[i]dY[i], dY[j] = dY[j], dY[i]def DFS(X, Y, edgeList, visited):dX = [0,  0, -1, 1]dY = [-1, 1, 0,  0]shuffle(dX, dY)for i in range(len(dX)):nextX = X + dX[i]nextY = Y + dY[i]if isValidPosition(nextX, nextY):if not visited[nextY][nextX]:visited[nextY][nextX] = TruecommonEdge = getCommonEdge(X, Y, nextX, nextY)if commonEdge in edgeList:edgeList.remove(commonEdge)DFS(nextX, nextY, edgeList, visited)edgeList = initEdgeList()visited  = initVisitedList()DFS(0, 0, edgeList, visited)edgeList.remove((0, 0, 0, 1))edgeList.remove((WIDTH, HEIGHT-1, WIDTH, HEIGHT))figure = plt.figure(figsize=(14.85,21))  # 创建一个指定大小的图像窗口 29.7变成29 除以2ax = plt.Axes(figure, [0., 0., 1., 1.], frame_on=False)  # 创建一个坐标轴,覆盖整个图像窗口figure.add_axes(ax)ax.axis('off')  # 关闭坐标轴显示for edge in edgeList:drawLine(edge[0], edge[1], edge[2], edge[3])# 新建图片文件夹,保存所有生成的迷宫图path=r'C:\Users\jg2yXRZ\OneDrive\桌面\细线迷宫图图片'folder_path = path+r'\01迷宫图'os.makedirs(folder_path, exist_ok=True)plt.savefig(folder_path+r'\{}.png'.format('%02d'%i), dpi=400)  # 保存迷宫图像为maze.png,设置dpi参数调整图像质量# 生成60张图# 30*2	plt.close()  # 超过20张图片会提示占内存,所以关闭图像窗口释放内存
# plt.show()# print('-----------2、PNG上加箭头----------')from PIL import Image
import os# 箭头图片路径
arrow_image_path = path + r'\00箭头.png'# 调整后的箭头图片大小
new_arrow_size = (400, 200)  # 替换为你想要的箭头图片尺寸# 2张竖版的图片大小是5940,8400
# #2张竖版版的左下箭头 (100, 7750)   4张横版的右上箭头 (5500, 450)
p1=[100,5500]
p2=[7750,450]for r in range(len(p1)):#  遍历图片文件夹for filename in os.listdir(folder_path):if filename.endswith('.png'):# 打开原始图片image_path = os.path.join(folder_path, filename)image = Image.open(image_path)# 打开箭头图片并调整大小arrow_image = Image.open(arrow_image_path)arrow_image = arrow_image.resize(new_arrow_size)			# 如果箭头图片模式不是RGBA,则转换为RGBA模式以保留透明度信息if arrow_image.mode != 'RGBA':arrow_image = arrow_image.convert('RGBA')# 在指定位置添加箭头图片position = (int(p1[r]), int(p2[r]))  # 替换为你想要添加箭头图片的位置坐标image.paste(arrow_image, position, mask=arrow_image)# 保存修改后的图片new_image_path = os.path.join(folder_path, filename)image.save(new_image_path)# 关闭图片对象image.close()arrow_image.close()print('-----------3、 导入word,合并png----------')import os,time
from docx import Document
from docx.shared import Cm, RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn
from docx2pdf import convert
from PyPDF2 import PdfMerger# 设置路径和文件夹名称folder_path ='迷宫图所有图片文件夹路径'
path=r'C:\Users\jg2yXRZ\OneDrive\桌面\细线迷宫图图片'
folder_path = path+r'\01迷宫图'
template_path = path+r"\02迷宫图细线(A4横版2张竖图).docx"# 模板文件路径
output_path =path+r'\零时Word'# 生成docx和PDF的文件夹,最后要删除# 创建输出文件夹
if not os.path.exists(output_path):os.makedirs(output_path)n = 1
filename=[]
# 遍历图片文件夹
for i in range(0, len(os.listdir(folder_path)), 2):filename.clear()for p in range(0,2):filename .append(os.listdir(folder_path)[i+p])        # i+0、i+1print(filename)doc = Document(template_path)# 获取第一个表格table = doc.tables[0]for b in range(0,2):# 在表格中插入第一张图片  在表格中插入第二张图片table.cell(0,b).paragraphs[0].add_run().add_picture(os.path.join(folder_path, filename[b]), width=Cm(14.85), height=Cm(20.93))# 保存为Word文档doc.save(os.path.join(output_path, '{:02d}.docx'.format(n)))time.sleep(3)# 转换为PDFconvert(os.path.join(output_path, '{:02d}.docx'.format(n)), os.path.join(output_path, '{:02d}.pdf'.format(n)))n += 1# 合并PDF
pdf_lst = [os.path.join(output_path, filename) for filename in os.listdir(output_path) if filename.endswith('.pdf')]
pdf_lst.sort()file_merger = PdfMerger()
for pdf in pdf_lst:file_merger.append(pdf)file_merger.write(path+fr'\02(打印合集)迷宫图(A4横版整页2份竖图)({num}份).pdf')
time.sleep(3)file_merger.close()# 删除临时文件夹
import shutil
shutil.rmtree(output_path)
shutil.rmtree(folder_path)

图片生成过程

c8788e6635824262b6a88fc28025e753.png

add9719d20404908989df8c2b41794f5.png

 

d0539fae19054b74a13904aff20e3ba1.png

 

bb7c2a26e7a34932ae4cbb92afa181d0.png

 

 

有箭头的图片插入PDF

1d66285c29a341ff96fd5bf187dcee4b.png

f61d2f60f8e2426f8aa55400d44a145d.png

 

 

最终效果

728341a4b1fc4dafb75b5a5e190699b2.png

 

每个箭头的位置都是一样的(因为已经做成了图片)

37912bde8cda446e90c2980d04f53622.png

b92ef143dfe242b9bed6097e40f594de.pnga68a68ceb8734691996498f069742b94.png

 

这篇关于【教学类-09-07】20240401细线迷宫图02+箭头图片(A4横版一页-2份竖版)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

C#实现添加/替换/提取或删除Excel中的图片

《C#实现添加/替换/提取或删除Excel中的图片》在Excel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更加美观,下面我们来看看如何在C#中实现添加/替换/提取或删除E... 在Excandroidel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更

C#中图片如何自适应pictureBox大小

《C#中图片如何自适应pictureBox大小》文章描述了如何在C#中实现图片自适应pictureBox大小,并展示修改前后的效果,修改步骤包括两步,作者分享了个人经验,希望对大家有所帮助... 目录C#图片自适应pictureBox大小编程修改步骤总结C#图片自适应pictureBox大小上图中“z轴

使用Python将长图片分割为若干张小图片

《使用Python将长图片分割为若干张小图片》这篇文章主要为大家详细介绍了如何使用Python将长图片分割为若干张小图片,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果1. Python需求

使用 Python 和 LabelMe 实现图片验证码的自动标注功能

《使用Python和LabelMe实现图片验证码的自动标注功能》文章介绍了如何使用Python和LabelMe自动标注图片验证码,主要步骤包括图像预处理、OCR识别和生成标注文件,通过结合Pa... 目录使用 python 和 LabelMe 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心

Java操作xls替换文本或图片的功能实现

《Java操作xls替换文本或图片的功能实现》这篇文章主要给大家介绍了关于Java操作xls替换文本或图片功能实现的相关资料,文中通过示例代码讲解了文件上传、文件处理和Excel文件生成,需要的朋友可... 目录准备xls模板文件:template.xls准备需要替换的图片和数据功能实现包声明与导入类声明与

基于C#实现将图片转换为PDF文档

《基于C#实现将图片转换为PDF文档》将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片,所以本文将介绍如何使用C#将JPG/PNG图片转换为PDF文档,需要的可以参考下... 目录介绍C# 将单张图片转换为PDF文档C# 将多张图片转换到一个PDF文档介绍将图片(JPG、PNG)转

Qt QWidget实现图片旋转动画

《QtQWidget实现图片旋转动画》这篇文章主要为大家详细介绍了如何使用了Qt和QWidget实现图片旋转动画效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、效果展示二、源码分享本例程通过QGraphicsView实现svg格式图片旋转。.hpjavascript

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk