【教学类-36-08】转学“纪念册“留念(生肖用midjounery-niji)

news2024/9/21 21:37:57

作品样式

背景需求:

即将离开班级,我想收集一份28个孩子的绘画册做——留念转学纪念册.

材料准备:

 幼儿照片

——3月初到中6班拍摄的幼儿手持学号名字纸的照片(为了背诵幼儿信息而拍摄的照片,统一竖版)

 

生肖(鸡或狗的MJ图片,切成4格)

 

 

EXCLE(幼儿班级+学号+名字+生肖)

 WORD模板

 边框线隐藏(中间3竖条是装订线位置)

 代码展示:

# '''
# 转学纪念册1.0(一页1份)
# 目的:
# 1、转学纪念册-绘画
# 2、第一页右侧有照片和学号 
# 3、第二页,右侧底部添加生肖
# 作者:阿夏
# 时间:2023年6月22日)

# '''
print('----------第1步:提取所有的幼儿照片的路径------------')
import os
path=[]
p=r"C:\Users\jg2yXRZ\OneDrive\桌面\转学纪念册\转学纪念册"
# 过滤:只保留png结尾的图片
imgs=os.listdir(p)
for img in imgs:
    if img.endswith(".png"):
        path.append(p+'\\'+img)
# 所有图片的路径
print(path)
print(imgs)
# ['C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\转学纪念册\\转学纪念册\\01.jpg', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\转学纪念册\\转学纪念册\\02.jpg', 
# ['01.jpg', '02.jpg', 


print('----------第1步:提取所有鸡图片的路径------------')
import os
path_c=[]
p_c=r"C:\Users\jg2yXRZ\OneDrive\桌面\转学纪念册\鸡"
# 过滤:只保留png结尾的图片
imgs_c=os.listdir(p_c)
for img_c in imgs_c:
    if img_c.endswith(".png"):
        path_c.append(p_c+'\\'+img_c)
# 所有图片的路径
print(path_c)
print(imgs_c)


print('----------第1步:提取所有狗图片的路径------------')
import os
path_d=[]
p_d=r"C:\Users\jg2yXRZ\OneDrive\桌面\转学纪念册\狗"
# 过滤:只保留png结尾的图片
imgs_d=os.listdir(p_d)
for img_d in imgs_d:
    if img.endswith(".png"):
        path_d.append(p_d+'\\'+img_d)
# 所有图片的路径
print(path_d)
print(imgs_d)




print('----------第2步:提取EXCLE名字学号信息------------')
import xlrd
worksheet = xlrd.open_workbook('C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\转学纪念册\\中6名单(打印彩色的模板).xlsx')
sheet_names= worksheet.sheet_names()
print(sheet_names)
# 读取表1名称['Sheet1']

for sheet_name in sheet_names:    # 从SHEET1 SHeet2……读取多个工作表
    sheet = worksheet.sheet_by_name(sheet_name)    # 这里只读取Sheet1

    rows = sheet.nrows # 获取行数
    cols = sheet.ncols # 获取列数,尽管没用到

    all_content = []
    zo=[]
    for l in range(rows):
        row= sheet.row_values(l) # 获取第二列内容, 数据格式为此数据的原有格式(原:字符串,读取:字符串;  原:浮点数, 读取:浮点数)
        # print(row)
        name=row[0]+'  '+row[1]+'  '+row[2]
        # print(name)
        all_content.append(name)
        z=row[3]
        zo.append(z)

        
    # print(all_content)
    # 有第一行 班级学号姓名
info=all_content[1:]
print(info)# 没有第一行 班级学号姓名
zodiac=zo[1:]
print(zodiac)

    

  

# from PIL import Image 
# tp = Image.open(r'D:\Desktop\22.png') 
# tp.transpose(Image.FLIP_TOP_BOTTOM).save(r'D:\Desktop\220.png')  # 上下翻转

# # 再保存一个图片文件夹(图片左右翻转)
# from PIL import Image 
# tp = Image.open(r'D:\Desktop\22.png') 
# tp.transpose(Image.FLIP_LEFT_RIGHT).save(r'D:\Desktop\221.png')  # 左右翻转

print('----------第2步:新建一个临时文件夹------------')
# 新建一个”装N份word和PDF“的文件夹
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\转学纪念册\零时Word')


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 random

import 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 qn

from docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColor


for nn in range(0,int(len(info))):      # 读取图片的全路径  的数量 28张
    doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\转学纪念册\转学纪念册(模板).docx')
    
    figures=path[nn]           # 图片的全路径的第一张 

    table = doc.tables[0]          # 4567(8)行
#
    # 写入照片
    run=doc.tables[0].cell(0,3).paragraphs[0].add_run()        # # 图片位置 第一个表格的0 3 插入照片
    run.add_picture(r'{}'.format(figures),width=Cm(12.59),height=Cm(16.78))
    table.cell(0,3).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中 

    # # 写入幼儿信息
    k=info[nn]
    run=table.cell(1,3).paragraphs[0].add_run(k)    # 在单元格0,0(第1行第1列)输入第0个图图案
    run.font.name = '黑体'#输入时默认华文彩云字体
    # run.font.size = Pt(46)  #输入字体大小默认30号 换行(一页一份大卡片
    run.font.size = Pt(34)  #输入字体大小默认30号 一行里(可以一页两份)
    run.font.bold= True  #是否加粗
    run.font.color.rgb = RGBColor(200,200,200) #数字小,颜色深0-255
    # paragraph.paragraph_format.line_spacing = Pt(180) #数字段间距
    
    r = run._element
    r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
    table.cell(1,3).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中     
 

    # 写入生肖及图片
    # path_c[nn]
    table = doc.tables[1] 

    if zodiac[nn]=='鸡':
        # a=path_c[nn]
        # print(a)
        cc=random.sample(path_c,1)
        for c in cc:  
            print(c)
        run=doc.tables[1].cell(1,3).paragraphs[0].add_run()        # # 图片位置 第一个表格的0 3 插入照片
        run.add_picture(r'{}'.format(c),width=Cm(7),height=Cm(7))
        table.cell(1,3).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT #居中  
        


    if zodiac[nn]=='狗':
        dd=random.sample(path_d,1)
        for d in dd:    
            print(d)        
        run=doc.tables[1].cell(1,3).paragraphs[0].add_run()        # # 图片位置 第一个表格的0 3 插入照片
        run.add_picture(r'{}'.format(d),width=Cm(7),height=Cm(7))
        table.cell(1,3).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT #居中  
    
                
    doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\转学纪念册\零时Word\{}.docx'.format('%02d'%nn))   

    from docx2pdf import convert

    # docx 文件另存为PDF文件
    inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/转学纪念册/零时Word/{}.docx".format('%02d'%nn)  # 要转换的文件:已存在
    outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/转学纪念册/零时Word/{}.pdf".format('%02d'%nn)  # 要生成的文件:不存在
    # 先创建 不存在的 文件
    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 =  'C:/Users/jg2yXRZ/OneDrive/桌面/转学纪念册/零时Word'
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("C:/Users/jg2yXRZ/OneDrive/桌面/转学纪念册/(打印合集)转学纪念册1.0({}人共{}份).pdf".format(len(info),len(info)))
file_merger.close()
# doc.Close()

# print('----------第5步:删除临时文件夹------------')    
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/转学纪念册/零时Word') #递归删除文件夹,即:删除非空文件夹


终端运行:

直接运行,不要输入任何参数。

结果展示

 

 打印过程:

1、电脑直接翻页打印后,生肖动物位置在第2页的左上角倒置。

 

 

2、因此本次打印都是先打印奇数页,然后把出来的纸张重新摆放位置,白面向上,再次塞入打印机。

 

3、手动塞纸。第二次打印偶数页,正好让生肖动物在第2面的右下角。

 

 打印学具样式:

 

 

 幼儿操作过程:

(开学了再补)

幼儿操作情况

1、请小朋友在空白的地方画自画像

我不会画自己

我可以画公主吗?

可以,土豆人也可以、火柴人也行

一位女孩尝试看着右边的照片,画自己(眼镜、头发)

这给我启示:以后画自画像,是否可以给孩子提供他们自己的照片,便于幼儿关注自己的特征,用几何形(圆形、方形、半圆形、线条形)表现自己的特征。

或者试试能不能用MJ 或 SD将照片转换成线条。

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

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

相关文章

jmeter 连接数据库常见报错

1. 不允许主机连接到MySQL 报错信息: Response message:java.sql.SQLException: Cannot create PoolableConnectionFactory (null, message from server: "Host 192.168.1.6 is not allowed to connect to this MySQL server") 说明:本机的地…

代码随想录day10

232. 用栈实现队列 思路:用两个list去模拟栈的操作,一个入栈list,一个出栈list. 并且了解栈的操作,pop,peek,push. 代码: def __init__(self):self.stack1 [] #入栈self.stack2[] #出栈def push(self, x: int) ->…

【Linux】常用网络命令:ping\netstat\mount\ifconfig

ping命令用于检测主机,执行ping命令指令会使用ICMP传输协议,发出请求回应的信息,若远程主机的网络功能没有问题,就会回应该信息。   netstat命令用于显示网络状态,利用netstat 指令可让你得知linux系统的网络情况。…

图像 跟踪 - MOTR: End-to-End Multiple-Object Tracking with Transformer (ECCV 2022)

MOTR: End-to-End Multiple-Object Tracking with Transformer - 使用Transformer进行端到端多目标跟踪(ECCV 2022) 摘要1. 引言2. 相关工作3. 方法3.1 目标检测中的查询3.2 检测查询和跟踪查询3.3 Tracklet-Aware标签分配3.4 MOTR架构3.5 查询交互模块3…

git-创建文件夹方式管理分支

文章目录 前言一、效果图二、git命令总结 前言 下面介绍一个git创建文件夹的方式管理分支的方法,在sourcetree上显示目录样式,好对每个版本做管理,可以更方便追踪历史版本代码。 一、效果图 1、git文件夹方式管理分支 二、git命令 1、在本…

SSMP整合案例(14) 将界面查询改为分页查询

前面几篇文章过后 我们的项目基本环境就算搭好了 但是 我们下面的分页显然就是个摆设 这里 我们就先将查询的方法改成分页的 我们 java项目之前做了这个分页的函数 那么 我们vue项目 直接在 src下的 api 下的bookApi.js中加上对应的函数 export function getPage(params){r…

动态SLAM论文(8) — DynaSLAM II: Tightly-Coupled Multi-Object Tracking and SLAM

目录 1 Introduction 2 Related Work 3 Method A. 符号表示 B. 物体数据关联 C. 以对象为中心的表示 D. 对象束调整 E. 边界框 4 Experiments A. 视觉里程计 B. 多目标跟踪 C. 时间分析 5 结论和未来工作 摘要 —— 在视觉SLAM算法中,假设场景是刚性的是…

快速入门uniapp——从环境搭建到项目实践

🙂博主:小猫娃来啦 🙂文章核心:快速入门uniapp——从环境搭建到项目实践 文章目录 初步介绍UniApp开发环境搭建下载和安装UniApp开发工具创建新项目(HBuilderX)开发工具界面介绍 UniApp基础知识页面结构页面…

Rdkit|SMARTS语言应用

github:地址 文章目录 Rdkit|SMARTS语言应用子结构搜索HasSubstructMatch(patt)得到子结构序列GetSubstructMatch删除子结构AllChem.DeleteSubstructs(m,patt)取代基替换AllChem.ReplaceSubstructs(m, patt, rep)显示核心结构显示侧链结构 Chem.ReplaceCore分子拆分…

vue transition标签用法

transition标签 是Vue的内置动画标签,在插入/更新/移除DOM元素时,在合适的时候给元素添加样式类名(配合css样式使用,实现动画效果) 注意: 1.transition标签只能包含一个元素;如果里面写了多个…

如何从零开始学习自动化测试?终于找到靠谱的教程了

目录 前言 测试基础 Python基础 selenium appium requests unittest 项目实战: 总结: 前言 最近有几个小伙伴在后台给安静私信说,如何学习自动化,不知道如何入手?在网上看的资料都是乱七八糟的,每…

接口返回慢 图片加载失败问题

该图片是通过后端接口返回picUrl来给img的src赋值 但是后端接口响应较慢 导致html加载完 data也没赋到值 图片加载裂开 解决办法&#xff1a;img标签添加error事件获取错误信息回调 <img v-if"certificateUrl" :src"certificateUrl" class"certif…

三星强势进军车用半导体,2025年开始提供8英寸氮化镓代工服务

根据来自韩国商业报导的消息&#xff0c;三星电子最近在美国和韩国两地举办了一个专门针对行业人士的论坛&#xff0c;旨在展示2023年的三星晶圆代工技术。在这次活动中&#xff0c;三星宣布将在2025年开始提供面向消费者、数据中心及汽车应用的8英寸氮化镓&#xff08;GaN&…

如何关闭电脑自动更新

文章目录 前言Win10操作第一种&#xff1a;停止Windows Update第二种&#xff1a; 更新和安全暂停更新xxx天 Win11操作总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 关闭有关闭的好处&#xff1b;更新有更新的好处。谨慎操作&#xff01; 1、如…

123.【SpringBoot 源码刨析B】

SpringBoot-核心功能 (三)、SpringBoot核心功能1.配置文件1.1、properties1.2、yaml(1).yaml 简介(2).yaml 基本语法(3).数据类型(4).示列 1.3、配置提示 2.WEB 开发1.SpringMVC自动配置概览2.简单功能分析(1).静态资源访问&#xff08;1.1&#xff09;.静态资源目录&#xff0…

CentOS7安装后不能复制解决方案

CentOS7安装后无法使用鼠标选中&#xff0c;复制问题解决 yum命令安装gpm &#xff1a; yum install gpm* 运行systemctl enable gpm.servicere 添加到后台服务 启动&#xff1a; systemctl start gpm.service 查看启动状态: systemctl status gpm.service CentOS7服务使…

自制游戏引擎之shader预编译

shader预编译为二进制,在程序运行时候加载,可以提升性能,节省启动时间. 1. 采用google shaderc预编译与加载shader 1.1 下载代码 https://github.com/google/shaderc third_party文件里需要放依赖的第三方 因为电脑访问google的问题,无法通过shaderc-2023.4\utils\git-sync-de…

雅特力 AT32F437 配置RT-Thread 以太网(UDP/TCP Server)

好记性不如烂笔头&#xff0c;既然不够聪明&#xff0c;就乖乖的做笔记&#xff0c;温故而知新。 本文档用于本人对知识点的梳理和记录。 雅特力 AT32F437 配置RT-Thread 以太网(UDP/TCP Server) 目录 一、前言 二、ENV配置 三、结语 一、前言 ENV版本&#xff1a;v1.3.5 rt-…

【深度学习】AIGC ,ControlNet 论文,原理,训练,部署,实战,教程(一)

论文&#xff1a;https://arxiv.53yu.com/pdf/2302.05543 代码&#xff1a;https://github.com/lllyasviel/ControlNet 得分几个博客完成这个事情的记录了&#xff0c;此篇是第一篇&#xff0c;摘录了一些论文内容。ControlNet 的原理极为朴实无华&#xff08;对每个block添加…

软件设计模式与体系结构-设计模式-行为型软件设计模式-状态模式

五、状态模式 概念 与策略模式类似&#xff0c;状态模式将不同状态下的行为封装在不同的类中&#xff0c;每个类代表一个状态 状态模式的组成 Context&#xff1a;定义了与客户程序的接口&#xff0c;它保持了一个concreteState的代表现在状态的实例State&#xff1a;定义了…