【教学类-36-05】20230704动物头饰制作2.0(midjounery动物简笔画四图)一页两种动物

作品展示

 背景需求:

头饰1.0的教学实践发现,完全可以利用裁剪的边缘纸条作为头饰的套环。因此重新设计word模板,合理布局图案位置,设计了一页2份的头饰。

【教学类-36-02】20230625动物头饰制作1.0(midjounery动物简笔画四图)一页一种动物_英语头饰动物的制作图片-CSDN博客文章浏览阅读352次。【教学类-36-02】20230625动物头饰制作1.0(midjounery动物简笔画四图)一页一种动物_英语头饰动物的制作图片https://blog.csdn.net/reasonsummer/article/details/131383513

原来样式:一页一份动物(4个)

 现在样式:一页2份动物(8个)

材料准备

位置

 图片(一张图有4个小图)需要切割

 Word设计

 合并代码展示(切割图片+插入图片+合并学具)

# '''
# 四图动物 头饰制作
# 目的:引导幼儿延边剪任意一种的动物的四个图片,制作头饰,折纸物
# 作者:阿夏
# 时间:2023年7月4日17:27)

# '''

# 切割四张图片



from PIL import Image
import os
import os.path
long=int(input('图片长度像素(1024)\n'))
wide=int(input('图片宽度像素(1024)\n'))

small_long=int(input('长边切分2(4*3)\n'))
small_wide=int(input('宽边切分2(4*3)\n'))
# 目前图片都是2*2,3*3排列

# 1:1图比例是2048
# 16:9图片比例 2912:1632

z=0
longall=[]
longall.append(z)
for l in range(1,small_long+1):
    ll=float(long/small_long*l)
    longall.append(ll)
print(longall)
# 右侧边的所有参数 长/X
# [0, 512, 1024, 1536, 2048]


wideall=[]
wideall.append(z)
for w in range(1,small_wide+1):
    ww=float(long/small_wide*w)    
    wideall.append(ww)
print(wideall)
# 下边的所有参数 宽/X
# [0, 682.6666666666666, 1365.3333333333333, 2048.0]


pic=[]
for x in range(0,small_wide):
    for y in range(0,small_long):
        z1=longall[y]
        z2=wideall[x]
        z3=longall[y+1]
        z4=wideall[x+1]
        pic.append(z1)
        pic.append(z2)
        pic.append(z3)
        pic.append(z4)
print(len(pic))

# 新建一个”装N份word和PDF“的文件夹
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\头饰制作\动物四格图片')
if not os.path.exists(r'C:\Users\jg2yXRZ\OneDrive\桌面\头饰制作\动物四格图片'):
     os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\头饰制作\动物四格图片')
else:
    pass
 
# 定义文件所在文件夹
image_dir = r'C:\Users\jg2yXRZ\OneDrive\桌面\头饰制作\动物图片'
for parent, dir_name, file_names in os.walk(image_dir):  # 遍历每一张图片
    for filename in file_names:
        print(filename)
        pic_name = os.path.join(parent, filename)
        image = Image.open(pic_name)
        _width, _height = image.size
        print(_width, _height)
 

        qfall=4
        # 每张图有4个坐标
        n=0  
        for p in range(int(len(pic)/4)):
            pp=pic[p*4:p*4+4]
            print(pp)

                    
            # 定义裁剪范围(left, upper, right, lower)1024
            # # box = image.crop((0,0,123,123))
            box = image.crop((pp[0],pp[1],pp[2],pp[3]))
            name = filename[:-4]+'_'+str(n) +'.png'

            print(name)
            # # # ,pp[3],pp[4],pp[5],pp[6],pp[7],pp[8],pp[9]))
            # # name = filename[:-4]+'_'+str(p) +'.png'
            
            box.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\头饰制作\动物四格图片\{}'.format(name))
            n+=1
            
#     print('Done!')   

 

print('----------第1步:提取所有的幼儿照片的路径------------')
import os
path=[]
p=r"C:\Users\jg2yXRZ\OneDrive\桌面\头饰制作\动物四格图片"
# 过滤:只保留png结尾的图片 31张(多几张备用)
imgs=os.listdir(p)
for img in imgs:
    if img.endswith(".png"):
        path.append(p+'\\'+img)
# 所有图片的路径
print(path)
# 提取动物名字倒数第4个字之前的动物名字
print(imgs)
  
# 四个为一组
path4=[]
for t in range(int(len(path)/4)):
    tt=path[t*4:t*4+4]
    path4.append(tt)
print(path4)
print(len(path4))



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


bg=[]
for xx in range(0,2):
    for yy in range(0,2):
        aa='{}{}'.format(xx,yy)
        bg.append(aa)
print(bg)
# ['00', '01', '10', '11']




for nn in range(0,int(len(path4)/2)):      # 4张一组路径
    doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\头饰制作\头饰制作改良(模板).docx')
    
    figures=path4[nn*2:nn*2+2]           # 图片的全路径的第一张 
    print(figures)

   
    for b in range(2):
        table = doc.tables[b]          # 4567(8)行

        for t in range(len(bg)):   # 02
            pp=int(bg[t][0:1])    
            qq=int(bg[t][1:2])  
            # print(p)               
            k=figures[b][t]  
            print(pp,qq,k)  
 
            # 写入照片
            run=doc.tables[b].cell(pp,qq).paragraphs[0].add_run()        # # 图片位置 第一个表格的0 3 插入照片
            run.add_picture(r'{}'.format(k),width=Cm(6.17),height=Cm(6.17))
            table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中       

                        
    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/桌面/头饰制作/(打印合集)头饰制作2.0({}人共{}份).pdf".format(len(path),len(path)))
file_merger.close()
# doc.Close()

# print('----------第5步:删除临时文件夹------------')    
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/头饰制作/零时Word') #递归删除文件夹,即:删除非空文件夹
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/头饰制作/动物四格图片') #递归删除文件夹,即:删除非空文件夹


终端运行;

先切割图片

 

 

 代码的第一部分是切割图片,需要运行一段时间

代码第二部分是把四张小图插入插入Word,

每四张图一份A4word和PDF

第三部分:所有的PDF合并为一个

 

最后的PDF打包文件 

------------END---------------

下学期暂时没有固定班级了,对教学的、办公的批量化需求减低了。缺乏实用性情况下,但愿研究还能继续下去啊

其他MJ的学具

【教学类-36-06】20230707动物面具-正方形15*15手工纸(midjounery-niji)(涂色、裁剪、镂空剪、实用性研究(怎样贴在脸上))_a4纸做面具打印-CSDN博客文章浏览阅读126次。【教学类-36-06】20230707动物面具-正方形15*15手工纸(midjounery-niji)(涂色、裁剪、镂空剪、实用性研究(怎样贴在脸上))_a4纸做面具打印https://blog.csdn.net/reasonsummer/article/details/132666566【教学类-36-07】20230707三只对称蝴蝶(midjounery-niji)(涂色、裁剪、游戏(飞舞的蝴蝶))-CSDN博客文章浏览阅读274次。【教学类-36-07】20230707三只对称蝴蝶(midjounery-niji)(涂色、裁剪、游戏(飞舞的蝴蝶))https://blog.csdn.net/reasonsummer/article/details/131598617【教学类-36-10】20230908方脸爷爷和圆脸奶奶(midjounery-niji)(中班:《我爱我家》数:连线、涂色)-CSDN博客文章浏览阅读136次。【教学类-36-10】20230908方脸爷爷和圆脸奶奶(midjounery-niji)(中班:《我爱我家》数:连线、涂色)https://blog.csdn.net/reasonsummer/article/details/132874726【教学类-36-11】20230921简易动物茶杯(四面动物盒)(midjounery-niji)(数:连线、涂色)-CSDN博客文章浏览阅读87次。【教学类-36-11】20230921简易动物茶杯(四面动物盒)(midjounery-niji)(数:连线、涂色)https://blog.csdn.net/reasonsummer/article/details/133436123

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿夏reasonsummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值