【教学类-58-14】黑白三角拼图12——单页1页图。参考图1页6张(黑白、彩色)、板式(无圆点、黑圆点、白圆点)、宫格2-10、张数6张,适合集体操作)

背景需求:

基于以下两个代码,设计一个单页1页黑白三角、彩色三角(包含黑点、白点、无点)的代码。

【教学类-58-12】黑白三角拼图10(N张参考图+1张操作卡+多张彩色白块,适合个别化)-CSDN博客文章浏览阅读888次,点赞27次,收藏7次。【教学类-58-12】黑白三角拼图10(N张参考图+1张操作卡+多张彩色白块,适合个别化) https://blog.csdn.net/reasonsummer/article/details/146476754?spm=1011.2415.3001.5331【教学类-58-13】黑白三角拼图11——左右结构图、一页三张,颜色(黑白、彩色)、板式(无圆点、黑圆点、白圆点)、宫格起止数、张数,适合集体操作)-CSDN博客文章浏览阅读517次,点赞11次,收藏10次。【教学类-58-13】黑白三角拼图11——左右结构图、一页三张,颜色(黑白、彩色)、板式(无圆点、黑圆点、白圆点)、宫格起止数、张数,适合集体操作) https://blog.csdn.net/reasonsummer/article/details/146500374?spm=1011.2415.3001.5331

单页1页的黑白三角(包含黑点、白点、无点)

'''彩色三角图,2宫格36张,3宫格36张……适合个别化 大操作卡
01彩色三角 1页1图大操作图 彩色块 无空心点 
1、选择颜色:彩色
2、黑点、白点、无点
3、随机图片
AI对话大师,阿夏
2025年3月26日'''
import os,time
from PIL import Image, ImageDraw
from docx import Document
from docx.shared import Cm
from docx.shared import Pt
import shutil
import os
from PyPDF2 import PdfFileMerger path = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250323黑白三角图案版(彩色)'# 起始宫格数
start=int(input('开始宫格数,如2\n'))
# 最大宫格数
end=int(input('截止宫格数,如10\n'))# 黑白或彩色style=['0无圆点','1黑圆点','2白圆点']
s=int(input('请选择:0:无圆点,1:黑圆点,2:白圆点\n'))# 1张(3张)=1,2
zhang=int(input('每种宫格生成多少张(一张有3份左右对称的?)比如:6张\n'))colors=['black','black']
# 选择颜色:0黑白、1彩色for gongge in range(start,end+1): # 遍历3宫格到10宫格for ys in range(zhang,zhang+1):new = path + fr'\{gongge:02}宫格组合图片'os.makedirs(new, exist_ok=True)newall=path+r'\02单页拼图'os.makedirs(newall,exist_ok=True)radius = 5f = 6 * ys  # 一页6张b = 400  # 画布大小by = 10  # 边距print('----------1\制作白色操作图------------')for g in range(gongge,gongge+1):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)# 绘制每个单元格的左上角、右上角、左下角、右下角的黑色圆形for i in range(rows):for j in range(cols):left = margin + j * cell_widthupper = margin + i * cell_heightright = left + cell_widthlower = upper + cell_height# 绘制每个单元格的左上角、右上角、左下角、右下角的黑色圆形if s==0:  # 无圆点,纯黑线passelif s==1: # 绘制黑色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill=('black'), width=5)else:   # # 绘制白色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)], fill='white', outline='black', width=1)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill='white', outline='black', width=1)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill='white', outline='black', width=1)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill='white', outline='black', width=1)# # 保存画布# mb = f'{g:05d}格{c:05d}02模板{c:05d}.png'# canvas.save(new + fr'\{mb}')# 保存画布mb = f'{g:05d}格模板.png'canvas.save(new + fr'\{mb}')print('---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 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)# # color=['black','black']# color=['red','yellow','orange','blue','green','purple','pink']color=colors# 遍历每个坐标点组合for combination in selected_points:# 绘制填充为黑色的多边形# draw.polygon(combination, fill='black',outline=(255, 255, 255), width=1)draw.polygon(combination, fill=random.choice(color), outline=('black'), width=2)for i in range(rows):for j in range(cols):left = margin + j * cell_widthupper = margin + i * cell_heightright = left + cell_widthlower = upper + cell_heightif s==0:  # 无圆点,纯黑线passelif s==1: # 绘制黑色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill=('black'), width=5)else:   # # 绘制白色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)], fill='white', outline='black', width=1)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill='white', outline='black', width=1)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill='white', outline='black', width=1)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill='white', outline='black', width=1)# 绘制每个单元格的左上角、右上角、左下角、右下角的黑色圆形# 保存结果图像canvas.save(new + fr'\{g:05d}格{c:05d}01图纸{c:05d}.png')canvas.close()  # 关闭图像文件print('----4、贴图用黑色色块----------')canvas = Image.new('RGB', (b, b), (255, 255, 255))draw = ImageDraw.Draw(canvas)# 绘制表格的竖直线和水平线for i in range(cols + 1):x = margin + i * cell_widthdraw.line([(x, margin), (x, b - margin)], fill='black', width=2)for i in range(rows + 1):y = margin + i * cell_heightdraw.line([(margin, y), (b - margin, y)], fill='black', width=2)# 在每个单元格中绘制两个三角形for row in range(rows):for col in range(cols):left = margin + col * cell_widthupper = margin + row * cell_heightright = left + cell_widthlower = upper + cell_height              # 随机选择三个顶点坐标points = [(left, upper), (right, upper), (left, lower), (right, lower)]# random.shuffle(points)triangle1 = tuple(points[0:3])triangle2 = tuple(points[1:4])draw.polygon(triangle1, fill='black',outline='black',width=2)draw.polygon(triangle2, fill='white',outline='white',width=2)# 设置边框线为黑色draw.line([(margin, margin), (b - margin, margin), (b - margin, b - margin), (margin, b - margin), (margin, margin)], fill='black', width=2)for i in range(rows):for j in range(cols):left = margin + j * cell_widthupper = margin + i * cell_heightright = left + cell_widthlower = upper + cell_heightif s==0:  # 无圆点,纯黑线passelif s==1: # 绘制黑色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill=('black'), width=5)else:   # # 绘制白色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)], fill='white', outline='black', width=1)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill='white', outline='black', width=1)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill='white', outline='black', width=1)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill='white', outline='black', width=1)# 保存结果图像canvas.save(new + fr'\{g:05d}格黑块.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 Cmprint('---5参考图合并-----')# 读取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')]new1=path+r'\保存1'os.makedirs(new1, exist_ok=True)# 每8个图片一组进行处理grouped_files = [image_files[:-2][i:i+6] for i in range(0, len(image_files[:-2]), 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 = new1+fr'\02黑白三角{g:02d}宫格参考图.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(3)# 合并零时文件里所有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)print('---6答题卡合并(白图和黑三角卡片-----')# 读取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[-2:][i:i+2] for i in range(0, len(image_files[-2:]), 2)]print(grouped_files)for group_index, group in enumerate(grouped_files):# 创建新的Word文档doc = Document(path+r'\底图1格.docx')print(group)t=[f'黑白三角({gongge}宫格)操作卡',f'黑白三角({gongge}宫格)贴图卡']# 在单元格0,0写入“黑白三角(3宫格)操作卡”,24磅宋体for tt in range(len(t)):             table = doc.tables[tt]                # 两张表格cell = table.cell(0, 0)cell_paragraph = cell.paragraphs[0]cell_paragraph.clear()run = cell_paragraph.add_run(t[tt])run.font.name = '宋体'run.font.size = Pt(40)# 遍历每个单元格,并插入图片for cell_index, image_file in enumerate(group):# 计算图片长宽(单位:厘米)# 插入图片到单元格table = doc.tables[0]if cell_index == 0:cell = table.cell(1, 0)table = doc.tables[1]if cell_index == 1:cell = table.cell(1, 0)# else:#     continuecell_paragraph = cell.paragraphs[0]cell_paragraph.clear()run = cell_paragraph.add_run()run.add_picture(image_file, width=Cm(19.6), height=Cm(19.6))# 保存Word文档doc.save(os.path.join(new_folder, f'{group_index + 1:03d}.docx'))# output_folder = output_folderpdf_output_path = new1+fr'\01黑白三角{g:02d}宫格黑块底图.pdf'# pdf_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'))time.sleep(1)# 合并零时文件里所有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()# 删除输出文件夹shutil.rmtree(new_folder)shutil.rmtree(new)time.sleep(5)# print('---7合并答题卡和黑白三角卡片-----')t_folder = path+r'\pdf'os.makedirs(t_folder, exist_ok=True)pdf_output_path2 = t_folder + fr'\01黑白三角{g:02d}宫格{f}张合并.pdf'       # 合并零时文件里所有PDF文件merger = PdfFileMerger()for pdf_file in os.listdir(new1):if pdf_file.endswith('.pdf'):pdf_path = os.path.join(new1, pdf_file)merger.append(pdf_path)time.sleep(2)# 保存合并后的PDF文件merger.write(pdf_output_path2)merger.close()# 删除输出文件夹shutil.rmtree(new1)# shutil.rmtree(new)
#         time.sleep(2)print('------3-10宫格全部打包-------')
# pdf_output_path = path + fr'\01黑白三角全黑块({start}-{end})宫格{zhang*(end-start+1)}张参考图1套操作板.pdf' 
# output_folder = output_folder
if s==0:pdf_output_path = newall+fr'\01-01(单页1页)黑白三角 {start}-{end}宫格 每款{f*ys}图共{ys}张 黑色边框 无小圆点.pdf'
elif s==1:pdf_output_path = newall+fr'\01-02(单页1页)黑白三角 {start}-{end}宫格 每款{f*ys}图共{ys}张 黑色边框 黑色小圆点.pdf'
elif s==2:pdf_output_path = newall+fr'\01-03(单页1页)黑白三角 {start}-{end}宫格 每款{f*ys}图共{ys}张 黑色边框 白色小圆点.pdf'# 合并零时文件里所有PDF文件
merger = PdfFileMerger()
for pdf_file in os.listdir(t_folder):if pdf_file.endswith('.pdf'):pdf_path = os.path.join(t_folder, pdf_file)merger.append(pdf_path)time.sleep(2)# 保存合并后的PDF文件
merger.write(pdf_output_path)
merger.close()# 删除输出文件夹
shutil.rmtree(t_folder)
# shutil.rmtree(new)

单页1页的彩色三角(包含黑圆点、白点、无点、贴图卡片有7色)

'''彩色三角图,2宫格36张,3宫格36张……适合个别化 大操作卡
01彩色三角 1页1图大操作图 彩色块 无空心点 
1、选择颜色:彩色
2、黑点、白点、无点
3、随机图片
AI对话大师,阿夏
2025年3月26日'''
import os,time
from PIL import Image, ImageDraw
from docx import Document
from docx.shared import Cm
from docx.shared import Pt
import shutil
import os
from PyPDF2 import PdfFileMerger  # 起始宫格数
start=int(input('开始宫格数,如2\n'))
# 最大宫格数
end=int(input('截止宫格数,如10\n'))# 黑白或彩色path = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250323黑白三角图案版(彩色)'style=['0无圆点','1黑圆点','2白圆点']
s=int(input('请选择:0:无圆点,1:黑圆点,2:白圆点\n'))# 1张(3张)=1,2
zhang=int(input('每种宫格生成多少张(一张有3份左右对称的?)比如:6张\n'))colors=['red','yellow','orange','blue','green','purple','pink']
# 选择颜色:0黑白、1彩色# 选择颜色:0彩色、1彩色for gongge in range(start,end+1): # 遍历3宫格到10宫格for ys in range(zhang,zhang+1):new = path + fr'\{gongge:02}宫格组合图片'os.makedirs(new, exist_ok=True)newall=path+r'\02单页拼图'os.makedirs(newall,exist_ok=True)radius = 5f = 6 * ys  # 一页6张b = 400  # 画布大小by = 10  # 边距print('----------1\制作白色操作图------------')for g in range(gongge,gongge+1):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)# 绘制每个单元格的左上角、右上角、左下角、右下角的黑色圆形for i in range(rows):for j in range(cols):left = margin + j * cell_widthupper = margin + i * cell_heightright = left + cell_widthlower = upper + cell_heightif s==0:  # 无圆点,纯黑线passelif s==1: # 绘制黑色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill=('black'), width=5)else:   # # 绘制白色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)], fill='white', outline='black', width=1)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill='white', outline='black', width=1)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill='white', outline='black', width=1)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill='white', outline='black', width=1)# 保存画布mb = f'{g:05d}格模板.png'canvas.save(new + fr'\{mb}')print('---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 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)# # color=['black','black']# color=['red','yellow','orange','blue','green','purple','pink']color=colors# 遍历每个坐标点组合for combination in selected_points:# 绘制填充为黑色的多边形# draw.polygon(combination, fill='black',outline=(255, 255, 255), width=1)draw.polygon(combination, fill=random.choice(color), outline=(0, 0, 0), width=2)for i in range(rows):for j in range(cols):left = margin + j * cell_widthupper = margin + i * cell_heightright = left + cell_widthlower = upper + cell_heightif s==0:  # 无圆点,纯黑线passelif s==1: # 绘制黑色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill=('black'), width=5)else:   # # 绘制白色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)], fill='white', outline='black', width=1)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill='white', outline='black', width=1)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill='white', outline='black', width=1)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill='white', outline='black', width=1)# 绘制每个单元格的左上角、右上角、左下角、右下角的黑色圆形# 保存结果图像canvas.save(new + fr'\{g:05d}格{c:05d}01图纸{c:05d}.png')canvas.close()  # 关闭图像文件print('----4、贴图用黑色色块----------')for yy in colors:print(yy)canvas = Image.new('RGB', (b, b), (255, 255, 255))draw = ImageDraw.Draw(canvas)# 绘制表格的竖直线和水平线for i in range(cols + 1):x = margin + i * cell_widthdraw.line([(x, margin), (x, b - margin)], fill='black', width=2)for i in range(rows + 1):y = margin + i * cell_heightdraw.line([(margin, y), (b - margin, y)], fill='black', width=2)# # 在每个单元格中绘制两个三角形for row in range(rows):for col in range(cols):left = margin + col * cell_widthupper = margin + row * cell_heightright = left + cell_widthlower = upper + cell_height# 随机选择三个顶点坐标points = [(left, upper), (right, upper), (left, lower), (right, lower)]# random.shuffle(points)triangle1 = tuple(points[0:3])triangle2 = tuple(points[1:4])#         # 绘制三角形#         # 全部黑填充,白色边框#         # draw.polygon(triangle1, fill='black',outline='white',width=2)#         # draw.polygon(triangle2, fill='black',outline='white',width=2)# 全部黑色填充用黑色边框,白色填充用白色边框draw.polygon(triangle1, fill=yy,outline='black',width=2)draw.polygon(triangle2, fill='white',outline='black',width=2)# 设置边框线为白色draw.line([(margin, margin), (b - margin, margin), (b - margin, b - margin), (margin, b - margin), (margin, margin)], fill='white', width=2)for i in range(rows):for j in range(cols):left = margin + j * cell_widthupper = margin + i * cell_heightright = left + cell_widthlower = upper + cell_heightif s==0:  # 无圆点,纯黑线passelif s==1: # 绘制黑色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill=('black'), width=5)else:   # # 绘制白色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)], fill='white', outline='black', width=1)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill='white', outline='black', width=1)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill='white', outline='black', width=1)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill='white', outline='black', width=1)# 保存结果图像canvas.save(new + fr'\{g:05d}格黑块{yy}.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 Cmprint('---5参考图合并-----')# 读取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')]new1=path+r'\保存1'os.makedirs(new1, exist_ok=True)# 每8个图片一组进行处理# -8张grouped_files = [image_files[:f][i:i+6] for i in range(0, len(image_files[:f]), 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 = new1+fr'\02彩色三角{g:02d}宫格参考图.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(3)# 合并零时文件里所有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)print('---6答题卡合并(白图和黑三角卡片-----')# 读取123文件夹中的所有图片地址(参考图)image_folder = newnew_folder = path+r'\零时文件夹1'      os.makedirs(new_folder, exist_ok=True)# 只要文件名image_name = [file for file in os.listdir(image_folder) if file.endswith('.png')]# 只要最后几个o = len(image_name)o1=o-fo2=-1flattened_names= [image_name[f:][i:i+o1] for i in range(0, len(image_name[f:]), o1)]print(flattened_names)# 去掉一层嵌套flattened_name = [item for sublist in flattened_names for item in sublist]print(flattened_name)t=[f'彩色三角({gongge}宫格)操作卡']t2=[f'彩色三角({gongge}宫格)贴图卡']*(o1-1)# 贴图卡后面添加颜色for t3 in range(len(t2)):t.append(t2[t3]+'('+flattened_name[t3+1][8:-4]+')')print(t)# 文件名+路径image_files = [os.path.join(image_folder, file) for file in os.listdir(image_folder) if file.endswith('.png')]flattened_lists= [image_files[f:][i:i+o1] for i in range(0, len(image_files[f:]), o1)]print(flattened_lists)# 多余的图flattened_list = [item for sublist in  flattened_lists for item in sublist]print(flattened_list)# # #  ['彩色三角(2宫格)操作卡', '彩色三角(2宫格)贴图卡(red)', '彩色三角(2宫格)贴图卡(yellow)', '彩色三角(2宫格)贴图卡(orange)', '彩色三角(2宫格)贴图卡(blue)', '彩色三角 # # # (2宫格)贴图卡(green)', '彩色三角(2宫格)贴图卡(purple)', '彩色三角(2宫格)贴图卡(pink)']for group_index in range(len(flattened_list)):print(group_index)        # 创建新的Word文档# 0doc = Document(path+r'\底图0格.docx')# 在单元格0,0写入“彩色三角(3宫格)操作卡”,24磅宋体# for tt in range(len(t)):             table = doc.tables[0]                # 两张表格cell = table.cell(0, 0)cell_paragraph = cell.paragraphs[0]cell_paragraph.clear()run = cell_paragraph.add_run(t[group_index])run.font.name = '宋体'run.font.size = Pt(40)# 插入图片# if cell_index == 0:cell = table.cell(1, 0)                          cell_paragraph = cell.paragraphs[0]cell_paragraph.clear()run = cell_paragraph.add_run()image_file1 = flattened_list[group_index]# image_file1=str(flattened_lists[group_index])print(image_file1)run.add_picture(image_file1, width=Cm(19.6), height=Cm(19.6))# 保存Word文档doc.save(os.path.join(new_folder, f'{group_index + 1:03d}.docx'))pdf_output_path = new1+fr'\01彩色三角{g:02d}宫格黑块底图.pdf'# pdf_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'))time.sleep(3)# 合并零时文件里所有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(3)# 保存合并后的PDF文件merger.write(pdf_output_path)merger.close()# 删除输出文件夹shutil.rmtree(new_folder)time.sleep(2)# print('---7合并答题卡和彩色三角卡片-----')t_folder = path+r'\pdf'os.makedirs(t_folder, exist_ok=True)pdf_output_path2 = t_folder + fr'\01彩色三角{g:02d}宫格{f}张合并.pdf'       # 合并零时文件里所有PDF文件merger = PdfFileMerger()for pdf_file in os.listdir(new1):if pdf_file.endswith('.pdf'):pdf_path = os.path.join(new1, pdf_file)merger.append(pdf_path)time.sleep(2)# 保存合并后的PDF文件merger.write(pdf_output_path2)merger.close()# 删除输出文件夹shutil.rmtree(new1)# shutil.rmtree(new)
#         time.sleep(2)print('------3-10宫格全部打包-------')
# pdf_output_path = path + fr'\01彩色三角全黑块({start}-{end})宫格{zhang*(end-start+1)}张参考图1套操作板.pdf' 
if s==0:pdf_output_path = newall+fr'\01-01(单页1页)彩色三角 {start}-{end}宫格 每款{f*ys}图共{ys}张 黑色边框 无小圆点.pdf'
elif s==1:pdf_output_path = newall+fr'\01-02(单页1页)彩色三角 {start}-{end}宫格 每款{f*ys}图共{ys}张 黑色边框 黑色小圆点.pdf'
elif s==2:pdf_output_path = newall+fr'\01-03(单页1页)彩色三角 {start}-{end}宫格 每款{f*ys}图共{ys}张 黑色边框 白色小圆点.pdf'#   合并零时文件里所有PDF文件
merger = PdfFileMerger()
for pdf_file in os.listdir(t_folder):if pdf_file.endswith('.pdf'):pdf_path = os.path.join(t_folder, pdf_file)merger.append(pdf_path)time.sleep(2)# 保存合并后的PDF文件
merger.write(pdf_output_path)
merger.close()# 删除输出文件夹
shutil.rmtree(t_folder)

但是生成过程中每次都出现病毒提示,必须点开设置允许,不去管它的话,30秒后就自动删除PDF文件了。

所以我想直接把三款一次性生成。做了一个遍历。

黑白三角 1页1图:操作卡和贴图卡

'''彩色三角图,2宫格36张,3宫格36张……适合个别化 大操作卡
01彩色三角 1页1图大操作图 彩色块 无空心点 
1、选择颜色:彩色
2、黑点、白点、无点
3、随机图片
AI对话大师,阿夏
2025年3月26日'''
import os,time
from PIL import Image, ImageDraw
from docx import Document
from docx.shared import Cm
from docx.shared import Pt
import shutil
import os
from PyPDF2 import PdfFileMerger path = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250323黑白三角图案版(彩色)'# 起始宫格数
start=int(input('开始宫格数,如2\n'))
# 最大宫格数
end=int(input('截止宫格数,如10\n'))#  选择颜色:0黑白、1彩色
colors=['black','black']# 黑白或彩色
zhang=int(input('每种宫格生成多少张(一张有3份左右对称的?)比如:6张\n'))style=['0无圆点','1黑圆点','2白圆点']
# s=int(input('请选择:0:无圆点,1:黑圆点,2:白圆点\n'))for s in [0,1,2]:    # 三种样式都生成# 1张(3张)=1,2for gongge in range(start,end+1): # 遍历3宫格到10宫格for ys in range(zhang,zhang+1):new = path + fr'\{gongge:02}宫格组合图片'os.makedirs(new, exist_ok=True)newall=path+r'\02单页拼图'os.makedirs(newall,exist_ok=True)radius = 5f = 6 * ys  # 一页6张b = 400  # 画布大小by = 10  # 边距print('----------1\制作白色操作图------------')for g in range(gongge,gongge+1):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)# 绘制每个单元格的左上角、右上角、左下角、右下角的黑色圆形for i in range(rows):for j in range(cols):left = margin + j * cell_widthupper = margin + i * cell_heightright = left + cell_widthlower = upper + cell_height# 绘制每个单元格的左上角、右上角、左下角、右下角的黑色圆形                if s==0:  # 无圆点,纯黑线passelif s==1: # 绘制黑色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill=('black'), width=5)else:   # # 绘制白色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)], fill='white', outline='black', width=1)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill='white', outline='black', width=1)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill='white', outline='black', width=1)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill='white', outline='black', width=1)# 保存画布mb = f'{g:05d}格模板.png'canvas.save(new + fr'\{mb}')print('---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 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)# # color=['black','black']# color=['red','yellow','orange','blue','green','purple','pink']color=colors# 遍历每个坐标点组合for combination in selected_points:# 绘制填充为黑色的多边形# draw.polygon(combination, fill='black',outline=(255, 255, 255), width=1)draw.polygon(combination, fill=random.choice(color), outline=('black'), width=2)for i in range(rows):for j in range(cols):left = margin + j * cell_widthupper = margin + i * cell_heightright = left + cell_widthlower = upper + cell_heightif s==0:  # 无圆点,纯黑线passelif s==1: # 绘制黑色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill=('black'), width=5)else:   # # 绘制白色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)], fill='white', outline='black', width=1)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill='white', outline='black', width=1)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill='white', outline='black', width=1)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill='white', outline='black', width=1)# 绘制每个单元格的左上角、右上角、左下角、右下角的黑色圆形                    # 保存结果图像canvas.save(new + fr'\{g:05d}格{c:05d}01图纸{c:05d}.png')canvas.close()  # 关闭图像文件      print('----4、贴图用黑色色块----------')canvas = Image.new('RGB', (b, b), (255, 255, 255))draw = ImageDraw.Draw(canvas)# 绘制表格的竖直线和水平线for i in range(cols + 1):x = margin + i * cell_widthdraw.line([(x, margin), (x, b - margin)], fill='black', width=2)for i in range(rows + 1):y = margin + i * cell_heightdraw.line([(margin, y), (b - margin, y)], fill='black', width=2)# 在每个单元格中绘制两个三角形for row in range(rows):for col in range(cols):left = margin + col * cell_widthupper = margin + row * cell_heightright = left + cell_widthlower = upper + cell_height      # 随机选择三个顶点坐标points = [(left, upper), (right, upper), (left, lower), (right, lower)]# random.shuffle(points)triangle1 = tuple(points[0:3])triangle2 = tuple(points[1:4])draw.polygon(triangle1, fill='black',outline='black',width=2)# draw.polygon(triangle2, fill='white',outline='white',width=1)# 设置边框线为黑色# draw.line([(margin, margin), (b - margin, margin), (b - margin, b - margin), (margin, b - margin), (margin, margin)], fill='black', width=2)for i in range(rows):for j in range(cols):left = margin + j * cell_widthupper = margin + i * cell_heightright = left + cell_widthlower = upper + cell_heightif s==0:  # 无圆点,纯黑线passelif s==1: # 绘制黑色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill=('black'), width=5)else:   # # 绘制白色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)], fill='white', outline='black', width=1)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill='white', outline='black', width=1)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill='white', outline='black', width=1)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill='white', outline='black', width=1)# 保存结果图像canvas.save(new + fr'\{g:05d}格黑块.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 Cmprint('---5参考图合并-----')# 读取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')]new1=path+r'\保存1'os.makedirs(new1, exist_ok=True)# 每8个图片一组进行处理grouped_files = [image_files[:-2][i:i+6] for i in range(0, len(image_files[:-2]), 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'))# 将10个docx转为PDFimport osfrom docx2pdf import convertfrom PyPDF2 import PdfFileMerger# from PyPDF4 import PdfMerger# output_folder = output_folderpdf_output_path = new1+fr'\02黑白三角{g:02d}宫格参考图.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(3)# 合并零时文件里所有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)print('---6答题卡合并(白图和黑三角卡片-----')# 读取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[-2:][i:i+2] for i in range(0, len(image_files[-2:]), 2)]print(grouped_files)for group_index, group in enumerate(grouped_files):# 创建新的Word文档doc = Document(path+r'\底图1格.docx')print(group)t=[f'黑白三角({gongge}宫格)操作卡',f'黑白三角({gongge}宫格)贴图卡']# 在单元格0,0写入“黑白三角(3宫格)操作卡”,24磅宋体for tt in range(len(t)):             table = doc.tables[tt]                # 两张表格cell = table.cell(0, 0)cell_paragraph = cell.paragraphs[0]cell_paragraph.clear()run = cell_paragraph.add_run(t[tt])run.font.name = '宋体'run.font.size = Pt(40)# 遍历每个单元格,并插入图片for cell_index, image_file in enumerate(group):# 计算图片长宽(单位:厘米)# 插入图片到单元格table = doc.tables[0]if cell_index == 0:cell = table.cell(1, 0)table = doc.tables[1]if cell_index == 1:cell = table.cell(1, 0)# else:#     continuecell_paragraph = cell.paragraphs[0]cell_paragraph.clear()run = cell_paragraph.add_run()run.add_picture(image_file, width=Cm(19.6), height=Cm(19.6))# 保存Word文档doc.save(os.path.join(new_folder, f'{group_index + 1:03d}.docx'))pdf_output_path = new1+fr'\01黑白三角{g:02d}宫格黑块底图.pdf'# pdf_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'))time.sleep(1)# 合并零时文件里所有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()# 删除输出文件夹            shutil.rmtree(new_folder)shutil.rmtree(new)time.sleep(5)# print('---7合并答题卡和黑白三角卡片-----')t_folder = path+r'\pdf'os.makedirs(t_folder, exist_ok=True)pdf_output_path2 = t_folder + fr'\01黑白三角{g:02d}宫格{f}张合并.pdf'       # 合并零时文件里所有PDF文件merger = PdfFileMerger()for pdf_file in os.listdir(new1):if pdf_file.endswith('.pdf'):pdf_path = os.path.join(new1, pdf_file)merger.append(pdf_path)time.sleep(2)# 保存合并后的PDF文件merger.write(pdf_output_path2)merger.close()# 删除输出文件夹            shutil.rmtree(new1)# shutil.rmtree(new)#         time.sleep(2)print('------3-10宫格全部打包-------')if s==0:pdf_output_path = newall+fr'\01-01(单页1页)黑白三角 {start}-{end}宫格 每款{f*ys}图共{ys}张 黑色边框 无小圆点.pdf'elif s==1:pdf_output_path = newall+fr'\01-02(单页1页)黑白三角 {start}-{end}宫格 每款{f*ys}图共{ys}张 黑色边框 黑色小圆点.pdf'elif s==2:pdf_output_path = newall+fr'\01-03(单页1页)黑白三角 {start}-{end}宫格 每款{f*ys}图共{ys}张 黑色边框 白色小圆点.pdf'# 合并零时文件里所有PDF文件merger = PdfFileMerger()for pdf_file in os.listdir(t_folder):if pdf_file.endswith('.pdf'):pdf_path = os.path.join(t_folder, pdf_file)merger.append(pdf_path)time.sleep(2)# 保存合并后的PDF文件merger.write(pdf_output_path)merger.close()# 删除输出文件夹shutil.rmtree(t_folder)

白点

黑点

无点

彩色三角合并版 1页1图,白点、黑点、无点,三合一

'''彩色三角图,2宫格36张,3宫格36张……适合个别化 大操作卡
01彩色三角 1页1图大操作图 彩色块 无空心点 
1、选择颜色:彩色
2、黑点、白点、无点
3、随机图片
AI对话大师,阿夏
2025年3月26日'''
import os,time
from PIL import Image, ImageDraw
from docx import Document
from docx.shared import Cm
from docx.shared import Pt
import shutil
import os
from PyPDF2 import PdfFileMerger  path = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250323黑白三角图案版(彩色)'# 起始宫格数
start=int(input('开始宫格数,如2\n'))
# 最大宫格数
end=int(input('截止宫格数,如10\n'))# 黑白或彩色# 黑白或彩色
zhang=int(input('每种宫格生成多少张(一张有3份左右对称的?)比如:6张\n'))style=['0无圆点','1黑圆点','2白圆点']
# s=int(input('请选择:0:无圆点,1:黑圆点,2:白圆点\n'))for s in [0,1,2]:    # 三种样式都生成#colors=['red','yellow','orange','blue','green','purple','pink']# 选择颜色:0黑白、1彩色# 选择颜色:0彩色、1彩色for gongge in range(start,end+1): # 遍历3宫格到10宫格for ys in range(zhang,zhang+1):new = path + fr'\{gongge:02}宫格组合图片'os.makedirs(new, exist_ok=True)newall=path+r'\02单页拼图'os.makedirs(newall,exist_ok=True)radius = 5f = 6 * ys  # 一页6张b = 400  # 画布大小by = 10  # 边距print('----------1\制作白色操作图------------')for g in range(gongge,gongge+1):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)# 绘制每个单元格的左上角、右上角、左下角、右下角的黑色圆形                    for i in range(rows):for j in range(cols):left = margin + j * cell_widthupper = margin + i * cell_heightright = left + cell_widthlower = upper + cell_heightif s==0:  # 无圆点,纯黑线passelif s==1: # 绘制黑色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill=('black'), width=5)else:   # # 绘制白色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)], fill='white', outline='black', width=1)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill='white', outline='black', width=1)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill='white', outline='black', width=1)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill='white', outline='black', width=1)# 保存画布mb = f'{g:05d}格模板.png'canvas.save(new + fr'\{mb}')print('---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 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)# # color=['black','black']# color=['red','yellow','orange','blue','green','purple','pink']color=colors# 遍历每个坐标点组合for combination in selected_points:# 绘制填充为黑色的多边形# draw.polygon(combination, fill='black',outline=(255, 255, 255), width=1)draw.polygon(combination, fill=random.choice(color), outline=(0, 0, 0), width=2)for i in range(rows):for j in range(cols):left = margin + j * cell_widthupper = margin + i * cell_heightright = left + cell_widthlower = upper + cell_heightif s==0:  # 无圆点,纯黑线passelif s==1: # 绘制黑色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill=('black'), width=5)else:   # # 绘制白色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)], fill='white', outline='black', width=1)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill='white', outline='black', width=1)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill='white', outline='black', width=1)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill='white', outline='black', width=1)# 绘制每个单元格的左上角、右上角、左下角、右下角的黑色圆形# 保存结果图像canvas.save(new + fr'\{g:05d}格{c:05d}01图纸{c:05d}.png')canvas.close()  # 关闭图像文件print('----4、贴图用黑色色块----------')for yy in colors:print(yy)canvas = Image.new('RGB', (b, b), (255, 255, 255))draw = ImageDraw.Draw(canvas)# 绘制表格的竖直线和水平线for i in range(cols + 1):x = margin + i * cell_widthdraw.line([(x, margin), (x, b - margin)], fill='black', width=2)# draw.line([(x, margin), (x, b - margin)], fill=yy, width=2)for i in range(rows + 1):y = margin + i * cell_heightdraw.line([(margin, y), (b - margin, y)], fill='black', width=2)# draw.line([(margin, y), (b - margin, y)], fill=yy, width=2)# # 在每个单元格中绘制两个三角形for row in range(rows):for col in range(cols):left = margin + col * cell_widthupper = margin + row * cell_heightright = left + cell_widthlower = upper + cell_height# 随机选择三个顶点坐标points = [(left, upper), (right, upper), (left, lower), (right, lower)]# random.shuffle(points)triangle1 = tuple(points[0:3])triangle2 = tuple(points[1:4])# 全部黑色填充用黑色边框,白色填充用白色边框draw.polygon(triangle1, fill=yy,outline='black',width=2) # 彩色填充黑色边框(粗2)# draw.polygon(triangle1, fill=yy,outline=yy,width=0)   # 彩色填充黑彩色边框(细1)# draw.polygon(triangle2, fill='white',outline='black',width=2)# 设置边框线为黑色# draw.line([(margin, margin), (b - margin, margin), (b - margin, b - margin), (margin, b - margin), (margin, margin)], fill='white', width=2)for i in range(rows):for j in range(cols):left = margin + j * cell_widthupper = margin + i * cell_heightright = left + cell_widthlower = upper + cell_heightif s==0:  # 无圆点,纯黑线passelif s==1: # 绘制黑色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill=('black'), width=5)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill=('black'), width=5)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill=('black'), width=5)else:   # # 绘制白色小圆点draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)], fill='white', outline='black', width=1)draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],fill='white', outline='black', width=1)draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],fill='white', outline='black', width=1)draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],fill='white', outline='black', width=1)# 保存结果图像canvas.save(new + fr'\{g:05d}格黑块{yy}.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 Cmprint('---5参考图合并-----')# 读取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')]new1=path+r'\保存1'os.makedirs(new1, exist_ok=True)# -8张grouped_files = [image_files[:f][i:i+6] for i in range(0, len(image_files[:f]), 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'))               # 将10个docx转为PDFimport osfrom docx2pdf import convertfrom PyPDF2 import PdfFileMergerpdf_output_path = new1+fr'\02彩色三角{g:02d}宫格参考图.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(3)# 合并零时文件里所有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)print('---6答题卡合并(白图和黑三角卡片-----')# 读取123文件夹中的所有图片地址(参考图)image_folder = newnew_folder = path+r'\零时文件夹1'      os.makedirs(new_folder, exist_ok=True)# 只要文件名image_name = [file for file in os.listdir(image_folder) if file.endswith('.png')]# 只要最后几个o = len(image_name)o1=o-fo2=-1flattened_names= [image_name[f:][i:i+o1] for i in range(0, len(image_name[f:]), o1)]print(flattened_names)# 去掉一层嵌套flattened_name = [item for sublist in flattened_names for item in sublist]print(flattened_name)t=[f'彩色三角({gongge}宫格)操作卡']t2=[f'彩色三角({gongge}宫格)贴图卡']*(o1-1)# 贴图卡后面添加颜色for t3 in range(len(t2)):t.append(t2[t3]+'('+flattened_name[t3+1][8:-4]+')')print(t)# 文件名+路径image_files = [os.path.join(image_folder, file) for file in os.listdir(image_folder) if file.endswith('.png')]flattened_lists= [image_files[f:][i:i+o1] for i in range(0, len(image_files[f:]), o1)]print(flattened_lists)# 多余的图flattened_list = [item for sublist in  flattened_lists for item in sublist]print(flattened_list)# # #  ['彩色三角(2宫格)操作卡', '彩色三角(2宫格)贴图卡(red)', '彩色三角(2宫格)贴图卡(yellow)', '彩色三角(2宫格)贴图卡(orange)', '彩色三角(2宫格)贴图卡(blue)', '彩色三角 # # # (2宫格)贴图卡(green)', '彩色三角(2宫格)贴图卡(purple)', '彩色三角(2宫格)贴图卡(pink)']for group_index in range(len(flattened_list)):print(group_index)        # 创建新的Word文档# 0doc = Document(path+r'\底图0格.docx')# 在单元格0,0写入“彩色三角(3宫格)操作卡”,24磅宋体# for tt in range(len(t)):             table = doc.tables[0]                # 两张表格cell = table.cell(0, 0)cell_paragraph = cell.paragraphs[0]cell_paragraph.clear()run = cell_paragraph.add_run(t[group_index])run.font.name = '宋体'run.font.size = Pt(40)                # 插入图片# if cell_index == 0:cell = table.cell(1, 0)                          cell_paragraph = cell.paragraphs[0]cell_paragraph.clear()run = cell_paragraph.add_run()image_file1 = flattened_list[group_index]# image_file1=str(flattened_lists[group_index])print(image_file1)run.add_picture(image_file1, width=Cm(19.6), height=Cm(19.6))# 保存Word文档doc.save(os.path.join(new_folder, f'{group_index + 1:03d}.docx'))pdf_output_path = new1+fr'\01彩色三角{g:02d}宫格黑块底图.pdf'# pdf_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'))time.sleep(3)# 合并零时文件里所有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(3)# 保存合并后的PDF文件merger.write(pdf_output_path)merger.close()# 删除输出文件夹            shutil.rmtree(new_folder)time.sleep(2)# print('---7合并答题卡和彩色三角卡片-----')t_folder = path+r'\pdf'os.makedirs(t_folder, exist_ok=True)pdf_output_path2 = t_folder + fr'\01彩色三角{g:02d}宫格{f}张合并.pdf'       # 合并零时文件里所有PDF文件merger = PdfFileMerger()for pdf_file in os.listdir(new1):if pdf_file.endswith('.pdf'):pdf_path = os.path.join(new1, pdf_file)merger.append(pdf_path)time.sleep(2)# 保存合并后的PDF文件merger.write(pdf_output_path2)merger.close()# 删除输出文件夹            shutil.rmtree(new1)print('------3-10宫格全部打包-------')# pdf_output_path = path + fr'\01彩色三角全黑块({start}-{end})宫格{zhang*(end-start+1)}张参考图1套操作板.pdf' if s==0:pdf_output_path = newall+fr'\02-01(单页1页)彩色三角 {start}-{end}宫格 每款{f*ys}图共{ys}张 黑色边框 无小圆点.pdf'elif s==1:pdf_output_path = newall+fr'\02-02(单页1页)彩色三角 {start}-{end}宫格 每款{f*ys}图共{ys}张 黑色边框 黑色小圆点.pdf'elif s==2:pdf_output_path = newall+fr'\02-03(单页1页)彩色三角 {start}-{end}宫格 每款{f*ys}图共{ys}张 黑色边框 白色小圆点.pdf'#   合并零时文件里所有PDF文件merger = PdfFileMerger()for pdf_file in os.listdir(t_folder):if pdf_file.endswith('.pdf'):pdf_path = os.path.join(t_folder, pdf_file)merger.append(pdf_path)time.sleep(2)# 保存合并后的PDF文件merger.write(pdf_output_path)merger.close()# 删除输出文件夹shutil.rmtree(t_folder)

黑点

白点

无点

彩色快一共7种颜色的色块

好了,测试完毕,生成正式的2-10宫格黑白、彩色的三款样式,每个宫格6张(36图),彩色有7种贴图卡

因为合并了,所以只出现一次安全提示

生成了2个小时,才完成黑白的三角的三款

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

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

相关文章

pytest-xdist 进行高效并行自动化测试

pytest-xdist 的核心功能是通过多进程分发测试任务&#xff0c;每个进程独立运行测试&#xff0c;确保测试隔离。2025 年 3 月 25 日&#xff0c;pytest-xdist 在 GitHub 上已有超过 1,200,000 次下载&#xff0c;表明其在测试社区中的广泛接受。 在自动化测试中&#xff0c;随…

18502 字符串哈希匹配字符串

18502 字符串哈希匹配字符串 ⭐️难度&#xff1a;中等 &#x1f31f;考点&#xff1a;字符串hash &#x1f4d6; &#x1f4da; import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class Main {static int…

通过git文件查看大模型下载链接的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

Linux设备永久挂载

一、fstab文件详解 下面是我虚拟机中的一个fstab文件,可以看到有四行配置,每一行有6个字段,下面我会对字段的含义进行讲解。 /etc/fstab 文件包含了如下字段,通过空格或Tab分隔: file systems:要挂载的分区或存储设备;dir:挂载位置;type:要挂载设备或分区的文件系统…

Linux系统初始化脚本

Rocky、Almalinux、CentOS、Ubuntu、Debian、openEuler、AnolisOS、OpenCloudOS、openSUSE、银河麒麟&#xff08;Kylin Server&#xff09;和统信&#xff08;Uos Server&#xff09;系统初始化脚本 Shell脚本源码地址&#xff1a; Gitee&#xff1a;https://gitee.com/raymo…

多智能体融合(Multi-Agent Fusion)

多智能体融合&#xff08;Multi-Agent Fusion&#xff09;是指在多智能体系统&#xff08;MAS, Multi-Agent System&#xff09;中&#xff0c;多个智能体&#xff08;Agent&#xff09;通过协作、竞争或共享信息&#xff0c;实现全局最优的智能决策和任务执行。该方法广泛应用…

[ ] 前后端连接 结合常见故障场景和解决

调试流程图&#xff1a; 一、基础网络检查 IP与端口验证 确认前端请求的URL与后端实际运行的IP和端口完全一致&#xff08;如http://192.168.1.100:8080/api&#xff09;使用ping命令测试网络连通性&#xff0c;telnet检查端口是否开放&#xff1a; telnet 192.168.1.100 80…

EMC知识学习一

一、概念 EMC电磁兼容&#xff1a;Electromagnetic Compatibility&#xff0c;包括两个方面&#xff1a;EMI&#xff1a;electromagnetic interference电磁干扰&#xff0c;指在设备正常运行过程中对所在环境产生的干扰不能超过一定的限值&#xff0c;EMS&#xff1a;电磁耐受性…

学有所记——初探向量数据库Weaviate

目标&#xff1a; 了解向量数据库的连接、建库、插入数据、查询数据等基本用法以及关于语义相似度的一些基本概念。 背景&#xff1a; 前段时间尝试在自己的电脑上搭建OllamaDify平台&#xff0c;体验并探索大模型的强大功能。在使用过程中&#xff0c;尤其是在搭建RAG知识库…

uv包简单使用案例

uv由Charlie Marsh开发&#xff0c;是Astral Tool的一个快速Python包安装器和解析器。它类似于pip和pip-tools&#xff0c;但速度更快。此外&#xff0c;uv还支持虚拟环境管理&#xff0c;替代venv和virtualenv。 参考&#xff1a;https://github.com/astral-sh/uv 安装&#x…

34.[前端开发-JavaScript基础]Day11-王者轮播图-书籍购物车-BOM对象-JSON

1 认识BOM操作 认识BOM 2 全局对象window window对象 window对象的作用 window常见的属性 window常见的方法 3 事件对象event window常见的事件 4 location、history location对象常见的属性 Location对象常见的方法 URLSearchParams history对象常见属性和方法 5 navigato…

工作流引擎Flowable介绍及SpringBoot整合使用实例

Flowable简介 Flowable 是一个轻量级的业务流程管理&#xff08;BPM&#xff09;和工作流引擎&#xff0c;基于 Activiti 项目发展而来&#xff0c;专注于提供高性能、可扩展的工作流解决方案。它主要用于企业级应用中的流程自动化、任务管理和审批流等场景。 Flowable 的核心…

Python----计算机视觉处理(Opencv:图像边缘检测:非极大值抑制,双阈值筛选)

一、 高斯滤波 边缘检测本身属于锐化操作&#xff0c;对噪点比较敏感&#xff0c;所以需要进行平滑处理。这里使用的是一个5*5的高斯 核对图像进行消除噪声。 二、计算图像的梯度和方向 三、非极大值抑制 在得到每个边缘的方向之后&#xff0c;其实把它们连起来边缘检测就算完了…

用Deepseek写扫雷uniapp小游戏

扫雷作为Windows系统自带的经典小游戏&#xff0c;承载了许多人的童年回忆。本文将详细介绍如何使用Uniapp框架从零开始实现一个完整的扫雷游戏&#xff0c;包含核心算法、交互设计和状态管理。无论你是Uniapp初学者还是有一定经验的开发者&#xff0c;都能从本文中获得启发。 …

JS数组方法

数组方法 一、数组 JavaScript 数组的大小是可调整的&#xff0c;并且可以包含不同 数据类型。&#xff08;当不需要这些特性时&#xff0c;请使用 类型数组。&#xff09; 注&#xff1a;JavaScript 类型数组是类似数组的对象&#xff0c;它提供了一种在内存缓冲区中读取和写…

string 的接口

我们继续来讲解一些常用的string接口。 一.at接口 我们来看一个越界的问题。 我们运行之后发现这是一个断言错误&#xff0c;直接就终止我们的程序了&#xff0c;不能作为异常被捕捉到&#xff0c;但是我们如果不想让程序直接崩溃该怎么办呢&#xff1f; 此时我们就要用到at关键…

2000-2019年各省地方财政行政事业性收费收入数据

2000-2019年各省地方财政行政事业性收费收入数据 1、时间&#xff1a;2000-2019年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;行政区划代码、地区、年份、地方财政行政事业性收费收入 4、范围&#xff1a;31省 5、指标说明&#xff1a;地方财政行政事业…

Pytorch学习笔记(九)Learning PyTorch - Deep Learning with PyTorch: A 60 Minute Blitz

这篇博客瞄准的是 pytorch 官方教程中 Learning PyTorch 章节的 Deep Learning with PyTorch: A 60 Minute Blitz 部分&#xff0c; 官网链接&#xff1a;https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html 完整网盘链接: https://pan.baidu.com/s/1L9…

Elasticsearch 的搜索功能

Elasticsearch 的搜索功能 建议阅读顺序&#xff1a; Elasticsearch 入门Elasticsearch 搜索&#xff08;本文&#xff09; 1. 介绍 使用 Elasticsearch 最终目的是为了实现搜索功能&#xff0c;现在先将文档添加到索引中&#xff0c;接下来完成搜索的方法。 查询的分类&…

比特币等虚拟货币实时价格使用说明,数字货币价格获取,k线获取,实时价格获取

数据截图 k线数据 websocket 实时价格数据 根据这些数据可以做出自己的产品 获取时间段内的k线数据 在开始之前&#xff0c;你需要知道的知识&#xff1a; 币种缩写英文名币种IDBTCBitcoinbitcoinETHEthereumethereumEOSEOSeosUSDTTethertetherLTCLitecoinlitecoinUSDDol…