恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

【教学类-162-01】20260827“主题墙-牙齿学号贴”(Python在图片上批量学号+自动插入单元格统一大小)

  • 首页
  • 资讯中心
  • /
  • 【教学类-162-01】20260827“主题墙-牙齿学号贴”(Python在图片上批量学号+自动插入单元格统一大小)

相关资讯

dcg allow-once临时授权码详解:24小时自动过期的单次放行机制 2026/8/29 16:34:51
TensorFlow 2.0 Callbacks深度解析:从核心机制到自定义实战 2026/8/29 16:29:50
法律AI落地关键:从合同审阅到法律研究的工程化实践 2026/8/29 16:29:50

最新资讯

FPGA计数器设计精讲:从秒表模块到Verilog实现与调试
多模态AGI驱动算力新基建:资本开支逻辑与工程实践
系统动力学模型在塑料污染预测与治理策略评估中的应用
PyTorch从零实现Transformer:手写多头注意力与编解码器
数学建模中的帕累托分析:从二八定律到实战应用
Python控制流深度解析:条件判断、循环与流程控制实战指南

今日推荐

云计算SPI三类服务模式是逐层抽象的关系:IaaS提供最底层的硬件资源,PaaS在IaaS基础上封装了开发运行环境,SaaS则进一步封装为可直接使用的软件
最新稳定版(Python 3.14):这是目前官方推荐的最新稳定版本。作为最后一个采用传统“3.x”命名的版本
etc目录下的profile.d文件目录设置环境变量和全局脚本shell

本周热门

Nextcloud 桌面客户端:把同步交给它,你只管改文件
如何将 HTML 转成 Word 文档且格式不丢失?html-to-docx 使用教程
Anki 批量操作卡片完整指南:一次搞定上千张,不再逐张修改

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

【教学类-162-01】20260827“主题墙-牙齿学号贴”(Python在图片上批量学号+自动插入单元格统一大小)

发布时间:2026/8/29 16:34:51
【教学类-162-01】20260827“主题墙-牙齿学号贴”(Python在图片上批量学号+自动插入单元格统一大小) 一、背景需求开学做环境创设中班有刷牙内容需要做背景版。搭档发了AI生成的图片。要求A4一页4*5个大小。打印后再牙齿上写学号。我说我可以程序批量添加学号。二、批量给牙齿图片from PIL import Image, ImageDraw, ImageFont import os # 修改这里路径建议写绝对路径避免找不到文件 base_dir rC:\Users\mhjg2\Desktop\牙齿 # 你的123文件夹 input_image os.path.join(base_dir, 牙齿修图.jpg) out_folder os.path.join(base_dir, 222) # 创建输出目录不存在自动新建 os.makedirs(out_folder, exist_okTrue) # 微软雅黑加粗 20磅 try: # Windows 微软雅黑粗体 msyhbd.ttc font ImageFont.truetype(msyhbd.ttc, 20) except OSError: # 如果找不到微软雅黑字体就降级默认字体 print(⚠️ 未找到微软雅黑粗体使用系统默认字体) font ImageFont.load_default(size20) # 循环1~30 for i in range(1, 31): # 读取底图 im Image.open(input_image).convert(RGB) draw ImageDraw.Draw(im) # (x100,y100)位置写数字黑色文字 draw.text(xy(100, 100), textstr(i), fontfont, fill(0, 0, 0)) # 文件名格式化01.png、02.png ……30.png out_name f{i:02d}.png save_full os.path.join(out_folder, out_name) im.save(save_full) print(f生成 {save_full}) print(\n✅全部30张图片处理完毕)左上角很小一个数字接下去就是不断调整数字的坐标和字体大小反复测试修改两个数字我觉得单数的位置正好但是双数的位置要想向左移动给了两个选择反复测试后确定这两个坐标位置 主题墙刷牙区的牙齿添加学号 豆包阿夏 202060828 from PIL import Image, ImageDraw, ImageFont import os base_dir rC:\Users\mhjg2\Desktop\牙齿 input_image os.path.join(base_dir, 牙齿修图.jpg) out_folder os.path.join(base_dir, 222) os.makedirs(out_folder, exist_okTrue) # 微软雅黑粗体完整系统路径 font_path rC:\Windows\Fonts\msyhbd.ttc try: font ImageFont.truetype(font_path, 350) print(✅成功加载微软雅黑加粗字体) except OSError: print(⚠️ 未找到微软雅黑粗体使用系统默认字体) font ImageFont.load_default(size260) for i in range(1, 31): im Image.open(input_image).convert(RGB) draw ImageDraw.Draw(im) text str(i) # 判断位数选择坐标 if len(text) 1: xy (580, 500) else: xy (460, 500) draw.text(xyxy, texttext, fontfont, fill(0, 0, 0)) out_name f{i:02d}.png save_full os.path.join(out_folder, out_name) im.save(save_full) print(f生成 {save_full} 数字:{text} 坐标:{xy}) print(\n✅全部30张图片处理完毕)三、批量插入单元格内隐藏边框。代码D:\Python310\python.exe -m pip install docx2pdf PyPDF2 主题墙刷牙区的牙齿添加学号 合并PDF 豆包阿夏 202060828 from docx import Document from docx.shared import Cm import os from docx2pdf import convert from PyPDF2 import PdfMerger import shutil base_dir rC:\Users\mhjg2\Desktop\牙齿 template_path os.path.join(base_dir, 模版.docx) img_folder os.path.join(base_dir, 222) out_save_dir os.path.join(base_dir, 输出word) temp_pdf_dir os.path.join(base_dir, 临时pdf) # 存放单份pdf os.makedirs(out_save_dir, exist_okTrue) os.makedirs(temp_pdf_dir, exist_okTrue) IMG_W Cm(5.5) IMG_H Cm(4.6) # 读取01~30图片 img_list [] for n in range(1, 31): fname f{n:02d}.png fp os.path.join(img_folder, fname) if os.path.exists(fp): img_list.append(fp) print(f读到图片{fname}) print(f\n总共找到图片{len(img_list)} 张) # 任务001.docx放1‑20002.docx放21‑30 task_list [ {out_name:001.docx, img_start:0, img_end:20}, {out_name:002.docx, img_start:20, img_end:30} ] generated_pdf_list [] for task in task_list: doc Document(template_path) table doc.tables[0] pic_offset 0 # 4行 ×5列 20单元格 for row in range(4): for col in range(5): cell table.cell(row, col) cell.text para cell.paragraphs[0] run para.add_run() current_img_idx task[img_start] pic_offset if current_img_idx len(img_list): run.add_picture(img_list[current_img_idx], widthIMG_W, heightIMG_H) pic_offset 1 docx_full os.path.join(out_save_dir, task[out_name]) doc.save(docx_full) print(f✅已生成docx{task[out_name]}图片区间{task[img_start]1} ~ {task[img_end]}) # docx转pdf参考拼图代码逻辑 pdf_name os.path.splitext(task[out_name])[0] .pdf pdf_full os.path.join(temp_pdf_dir, pdf_name) convert(docx_full, pdf_full) generated_pdf_list.append(pdf_full) print(f✅已转PDF{pdf_name}) print(\n----------合并PDF------------) merger PdfMerger() for pdf_file in generated_pdf_list: print(f合并{pdf_file}) merger.append(pdf_file) # 输出合并后的总pdf到牙齿根目录 final_pdf os.path.join(base_dir, 牙齿拼图_合并总文件.pdf) merger.write(final_pdf) merger.close() print(f✅合并完成总PDF{final_pdf}) print(\n----------清理临时文件(可选)------------) # 取消下面注释会删除临时pdf文件夹docx保留在输出word文件夹 # shutil.rmtree(temp_pdf_dir, ignore_errorsTrue) print(\n全部处理完成)所以docx模版改成3行5列 主题墙刷牙区的牙齿添加学号 合并PDF 豆包阿夏 202060828 from docx import Document from docx.shared import Cm import os from docx2pdf import convert from PyPDF2 import PdfMerger import shutil import time base_dir rC:\Users\mhjg2\Desktop\牙齿 template_path os.path.join(base_dir, 模版.docx) img_folder os.path.join(base_dir, 222) temp_pdf_dir os.path.join(base_dir, 临时pdf) # 存放单份pdf os.makedirs(temp_pdf_dir, exist_okTrue) IMG_W Cm(5.5) IMG_H Cm(4.6) # 读取01~30图片 img_list [] for n in range(1, 31): fname f{n:02d}.png fp os.path.join(img_folder, fname) if os.path.exists(fp): img_list.append(fp) print(f读到图片{fname}) print(f\n总共找到图片{len(img_list)} 张) # 自动计算不再手动写0‑15、15‑30 ROWS 3 COLS 5 PER_DOC ROWS * COLS # 每份文档最多容纳图片数量 15张 generated_pdf_list [] current_img_pos 0 # 当前图片指针全局向后移动 # 循环生成多份docx直到全部图片处理完毕 doc_index 1 while current_img_pos len(img_list): doc Document(template_path) table doc.tables[0] pic_offset 0 for row in range(ROWS): for col in range(COLS): cell table.cell(row, col) cell.text para cell.paragraphs[0] run para.add_run() # 还有图片就贴图没有就留空白 if current_img_pos len(img_list): run.add_picture(img_list[current_img_pos], widthIMG_W, heightIMG_H) current_img_pos 1 pic_offset 1 out_name f{doc_index:03d}.docx docx_full os.path.join(temp_pdf_dir, out_name) doc.save(docx_full) print(f✅已生成docx{out_name}已处理到第 {current_img_pos} 张图片) # docx转pdf pdf_name os.path.splitext(out_name)[0] .pdf pdf_full os.path.join(temp_pdf_dir, pdf_name) convert(docx_full, pdf_full) generated_pdf_list.append(pdf_full) print(f✅已转PDF{pdf_name}) doc_index 1 print(\n----------合并PDF------------) merger PdfMerger() for pdf_file in generated_pdf_list: print(f合并{pdf_file}) merger.append(pdf_file) final_pdf os.path.join(base_dir, 牙齿拼图_合并总文件.pdf) merger.write(final_pdf) merger.close() print(f✅合并完成总PDF{final_pdf}) # 等待2秒释放Word打开的文件句柄关键 time.sleep(2) def force_remove_folder(folder_path): 强制删除文件夹先删除内部所有文件再删目录 if not os.path.exists(folder_path): return # 先删除文件夹内全部文件 for name in os.listdir(folder_path): full_path os.path.join(folder_path, name) try: if os.path.isfile(full_path): os.remove(full_path) elif os.path.isdir(full_path): shutil.rmtree(full_path) except Exception as e: print(f跳过删除 {full_path}: {e}) # 再删除空文件夹 try: os.rmdir(folder_path) print(f✅已删除文件夹: {folder_path}) except Exception as e: print(f⚠️文件夹无法自动删除 {folder_path}请手动删除{e}) print(\n----------清理临时文件------------) force_remove_folder(temp_pdf_dir) print(\n全部处理完成)效果展示打印裁剪0.3CM白边、塑封、裁剪0.3CM透明边感悟AI可以在幼儿园标志制作主题墙牙齿批量添加学号批量插入单元格控制图片大小上都能运用。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号