【教学类-18-02】20221124《蒙德里安“红黄蓝黑格子画”-A4竖版》(大班)

news2024/9/27 9:26:13

  效果展示:

单页效果

 

多页效果

 

 

 预设效果

 

背景需求:

2022年11月23日,作为艺术特色幼儿园,蒙德里安风格装饰在我们幼儿园的环境中。

 蒙德里安是几何抽象画派的先驱,以几何图形为绘画的基本元素,与德士堡等创立了“风格派”,提倡自己的艺术“新造型主义”。他认为艺术应根本脱离自然的外在形式,以表现抽象精神为目的,追求人与神统一的绝对境界,也就是现在我们熟知的“纯粹抽象”。

《大块红色、黄色、黑色、灰色和蓝色的构成》布面油画1921达拉斯艺术博物馆藏

       以前指导孩子们临摹过上面这幅画,孩子们画的还不错。这次我想随机生成一些不同的线条框架,让幼儿根据不同的线条组成的大小块面,自行尝试填色(色彩涂色符合幼儿的绘画能力特点)。

     制作随机线条画有点难度,我参考了很多CSDN上的“蒙德里安的梦想”“蒙德里安多位K”代码,要么看不懂代码写了什么意思,要么Python VScode不能运行、要么就是效果不符合我的需求。

    最终找到了“https://blog.csdn.net/qq_45027465/article/details/125315445”(随机绘画图形)的代码,通过反复测试,修改参数,基本满足了我需要的黑线格子样式。  

 WORD模板设置

Word位置

 页边距:上下左右0.7

纸张方向:竖版

 

 插入第一个表格 1行*4列,其中左侧三个单元格的大小:高度8.6*宽度6.13

 

设置表格的框线

 第一个表格和第二个表格之间要有一个空行:空行的字体大小间距设置

 蒙德里安线条图

 画框外框线的设置(加粗框线)

 

 

运行代码:

'''

作者:阿夏
时间:2022年11月24日蒙德里安“红黄蓝黑格子画-竖版)
(A4横版,上面第一个格子做三角支撑,下面的第2个格子插入画作。))
'''


# 代码出处:https://blog.csdn.net/qq_45027465/article/details/125315445
import matplotlib.pyplot as plt
import matplotlib.patches as pch
import matplotlib.tri as tri
import numpy as np
import random
from cv2 import cv2
import os
import gc

print('-----------------第1部分:生成蒙德里安线正方形线条图-------------------')

n=int(input('请输入画布尺寸正方形(18Cm)\n'))
nn=int(input('一共要几张图(30)\n'))
figLong = n  # 19.2  # 的长k
figWide = n   # 18.3 的宽
h=input('横版还是竖版?\n')

color = ['b', 'r', 'g', 'y', 'c', 'm','w','k']# 蓝色,红色、绿色、黄色、青、品红、白、黑
 
def FigRect(ax,num):  # 画矩形
    # 以下代码是做随机矩形。
    for i in range(num):
        # l=figLong
        # w=figWide
        long = random.uniform(figLong,figLong*5)  # 矩形的长为0.5-3之间
        wide = random.uniform(figWide,figWide*5)  #
        X = random.uniform(0, figLong - long)
        Y = random.uniform(0, figWide - wide)
        # X =figLong - long
        # Y =figWide - wide
        a = random.randint(7, 7)        # 0,0蓝色  11红  22绿 33黄 44浅蓝、55浅紫 66白 77黑        # 线条色彩,这里只用7,黑色
        rect = pch.Rectangle(xy=(X, Y), width=wide, height=long, edgecolor=color[a], facecolor=color[a], fill=False,
                             linewidth=20)                            #  线条宽度
        ax.add_patch(rect)
        
        # 下面代码是做画框的边框(18*18)
        rect1 = pch.Rectangle(xy=(0, 0), width=figWide, height=figLong, edgecolor=color[a], facecolor=color[a], fill=False,
                             linewidth=20)                            #  线条宽度
        ax.add_patch(rect1)
       
    if num != 0:
        del ax, rect
        gc.collect() 
  
def main():
    figNum = nn  # 画图数量
    imgNum = 80  # 每张图的图形最多数量
    for i in range(figNum):
        fig, ax = plt.subplots(figsize=(figLong, figWide))
        a = random.randint(1, 1)# 0,0=黑色背景 1,1白色背景

        if a == 0:
            X = np.arange(0, figLong, 20)
            plt.fill_between(X, 0, figWide, color='k') 
        for j in range(0,imgNum):
            b = random.randint(0, 0)
            # b=3
            if b==0:
                FigRect(ax, 1)                # 图形粗密
            
         
        name = 'C:/Users/jg2yXRZ/OneDrive/桌面/蒙德里安/线条图/' + str(i) + '.jpg'
        plt.xlim(xmin=0, xmax=figLong)
        plt.ylim(ymin=0, ymax=figWide)
        plt.axis('off')
        plt.subplots_adjust(top=1, bottom=0, left=0, right=1, hspace=0, wspace=0)
        plt.margins(0, 0)
        plt.savefig(name, dpi=30)
        # plt.show()        # 只显示一次,并且不能自动关闭
        plt.clf()
        plt.close()
        
        del fig, ax
        gc.collect()

        # 模拟按键Alt+F4
        # plt.pause(1)
 
if __name__ == '__main__':
    main()
    

print('-----------------第2部分:导入Word,合成PDF-------------------')

import os,random
print('----------第1步:提取所有的蒙德里安线条图的路径------------')

path=[]
for i in range(0,nn):    # 一共有18张
    p=r"C:\Users\jg2yXRZ\OneDrive\桌面\蒙德里安\线条图\{}.jpg".format(i)
    path.append(p)  
print(path)
# ['C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\蒙德里安\\线条图\\1.jpg', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\蒙德里安\\线条图\\2.jpg', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\蒙德里安\\线条图\\3.jpg', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\蒙德里安\\线条图\\4.jpg', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\蒙德里安\\线条图\\5.jpg', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\七巧 
# 板\\线条图\\6.jpg', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\蒙德里安\\线条图\\7.jpg', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\蒙德里安\\线条图\\8.jpg', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\蒙德里安\\线条图\\9.jpg', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\蒙德里安\\线条图\\10.jpg', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\蒙德里安\\线条图\\11.jpg', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\蒙德里安\\线条图\\12.jpg', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\蒙德里安\\线条图\\13.jpg', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\蒙德里安\\线条图\\14.jpg', 
# 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\蒙德里安\\线条图\\15.jpg', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\蒙德里安\\线条图\\16.jpg', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\蒙德里安\\线条图
# \\17.jpg', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\蒙德里安\\线条图\\18.jpg']



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


print('----------第3步:把30个图片分别插入30个Word内 ------------')

from win32com.client import constants,gencache
from win32com.client.gencache import EnsureDispatch
from win32com.client import constants # 导入枚举常数模块
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.oxml.ns import qn


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

for nnn in range(0,len(path)):
    # word = gencache.EnsureDispatch('Word.Application')
    doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\蒙德里安\蒙德里安模板({}).docx'.format(h))# 打开带docx模板(这个模板有页脚的页码,阿夏认为页码是必须的)
    table = doc.tables[1]          # 一共有1个表格    
         
    k=path[nnn]                  # 提取list图案列表里面每个图形  t=索引数字 
    print(k)  

    run=doc.tables[1].cell(0,0).paragraphs[0].add_run()        # 在第一个表格中的每个单元格的第一行插入信息
    run.add_picture('{}'.format(k),width=Cm(18),height=Cm(18))   
    # 插入,k=所在路径。单元格大小有限,每张原始尺寸8.744CM,插入的大小最多4CM       
    
    table.cell(0,0).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中     

    # doc.Save()# 把有空格的1.docx保存n
    doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\蒙德里安\零时Word\{}.docx'.format('%02d'%nnn))       
    from docx2pdf import convert

    # docx 文件另存为PDF文件
    inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/蒙德里安/零时Word/{}.docx".format('%02d'%nnn)  # 要转换的文件:已存在
    outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/蒙德里安/零时Word/{}.pdf".format('%02d'%nnn)  # 要生成的文件:不存在
    # 先创建 不存在的 文件
    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/桌面/蒙德里安/(打印合集)纯色蒙德里安-{}({}份).pdf".format(h,nn))
file_merger.close()
# doc.Close()

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

重点说明

1、运行参数

 

 2、运行过程:

生成30张随机线条图。

生成图片所在路径

  

 3、重要设置:

如何大量随机出现的长方形线条(有些参数的意思我也不太理解)

 

 把图片导入Word

 

 

 效果再展示:

感悟:

1、竖板《蒙德里安》更符合幼儿操作规律

(1)日常学习都是先写学号名字,再开始制作,与横版《蒙德里安》相比,竖版可以让幼儿从左到右、从上到下的规律,先完成个人信息填写、然后涂上指定的颜色。接着绘画红黄蓝黑格子。符合书写顺序

(2)先写信息,在进行裁剪,黏贴。符合先写画、后剪贴的学习思路,减少遗漏

 2、竖板《蒙德里安》更符合操作台空间布局

平时活动都是准备30份A4学具,但是通常幼儿人数在23-26人之间,幼儿都会把多余的纸上上交,

老师:“放中间吧,万一有同学先完成了,可以在做一张!“

幼儿1:“可是桌子上放不下了”

幼儿2:“放着搞不清楚是谁的”

显然5-6人共用课桌时,大班幼儿能明显感受到操作空间有限——除了A4纸、还有记号笔剪刀胶水的笔筒及整盒蜡笔需要占空间。

因此在设计纸类学具投放时,要么把A4切成2份,要么把A4转换成正方形,如果必须要用整张A4,最好就是竖版排列。

横版&竖版

 

 教学展示:

时间:2022年11月2X日 下午15:00-15:30

班级:大1班

人数:人

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

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

相关文章

Python毕业设计选题推荐

同学们好,这里是海浪学长的毕设系列文章! 对毕设有任何疑问都可以问学长哦! 大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越…

释放数据生产力,数据治理要“即时”

近年来,数据成为核心生产要素之后,人们总是期待充分释放数据生产力。但知易行难,如何释放数据生产力,大部分企业却莫衷一是、无所适从。 尤其是针对文档等非结构化数据,工程设计、生物医药、智能制造、金融、教育等行…

关于地方美食的HTML网页设计——地方美食介绍网站 HTML顺德美食介绍 html网页制作代码大全

🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

SpringBoot 场景开发多面手成长手册

小册介绍 SpringBoot之强大 SpringBoot 的强大之处不言而喻,其底层 SpringFramework 强大的 IOC 容器和 AOP 机制,加之 SpringBoot 的自动装配,使得 SpringBoot 成为当今 JavaEE 开发中最受欢迎、使用范围极其广泛的基本技术。 但是&#x…

高性能队列Disruptor使用教程

目录一、简介二、代码2.1 依赖2.2 角色介绍2.3 事件类2.4 生产者2.5 消费者2.6 启动Disruptor2.7 测试源码一、简介 Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的…

【C++】多态/虚表

目录 一、概念 二、虚表工作/运行原理 1.虚函数在一个类内存储的大小 2.对虚函数的访问(一维数组) 3.单继承 (1)虚函数继承情况 (2)单继承存储的大小 (3)基类子类调用情况 …

Actipro Windows Forms Controls 22.1.3 注册版

Actipro Windows Forms Controls 窗体控件 一组用于构建漂亮的 Windows 窗体桌面应用程序的 UI 控件 语法编辑器 语法高亮代码编辑器控件和解析套件。 为您自己的应用程序带来类似于 Visual Studio 的强大代码编辑体验,以及流行代码编辑器中的所有高级功能。大多数流…

二次封装 Spring Data JPA/MongoDB,打造更易用的数据访问层

本文正在参加「金石计划 . 瓜分6万现金大奖」 最近我在做一个新项目,由于我们项目组一直使用的是 MongoDB 数据库,所以新项目我就打算上 Spring Data MongoDB 尝试一下,虽然我早就用过了 Spring Data JPA,对 Spring Data 的相关 …

第四章《类与对象》第3节:方法的重载

方法的重载是Java语言中一项非常重要的机制。Java语言因为有了重载机制,使得程序员定义和调用方法都变得更加轻松。 4.3.1方法重载的概念及实现原理 4.2小节的Person类中定义了计算2个整数之和的add()方法,如果程序员为add()方法传递两个double型参数,则会因参数类型不兼容…

期末前端web大作业——HTML+CSS+JavaScript仿京东购物商城网页制作(7页)

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

聊一聊我对Restful的理解

概念 REST原则提倡按照HTTP的语义使用HTTP,如果一个系统符合REST原则,我们就说这个系统是Restful风格的。Restful是Web API设计中非常重要的一个概念,但是很多开发人员对于Restful的理解存在误区。 什么是Restful 在说什么是Restful 之前&…

数据结构之基数排序

基数排序 先把各个数以个位数不同分到不同的队列中 如果一个队列多个元素用链表连起来 第一趟分配 然后进行第一趟收集 应为我们想得到递减 所以我们从个位数高到低收集 然后第二趟分配 根据第一趟得到的结果 以十位数分配 这里注意! 因为第一趟按个位分的&am…

ImmunoChemistry艾美捷高级钙素AM细胞活力试剂盒方案

ImmunoChemistry艾美捷ICT的Advanced Calcein AM Cell Viability Kit将Calcein AM与7-AAD相结合,可轻松同时标记单个样本中的活细胞、膜受损细胞和死细胞。钙黄绿素AM用于检测绿色荧光的活细胞,而7-AAD用于检测红色荧光的坏死或晚期凋亡细胞。可以使用流…

超详细curl新增支持openssl(https协议)支持

1、问题环境: os:Linux kali 5.5.0-kali2-amd64 #1 SMP Debian 5.5.17-1kali1 (2020-04-21) x86_64 GNU/Linux 2、涉及组件: curl当前版本:curl 7.85.0 openssl当前版本:OpenSSL 3.0.7 1 Nov 2022 (Library: OpenS…

学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计

🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

遥感SCI期刊汇总

1. BOLETIM DE CIENCIAS GEODESICAS 《大地测量科学通报》http://ojs.c3sl.ufpr.br/ojs2/index.php/bcgSemiannual (注:2008年开始被SCI收录)ISSN: 1413-4853UNIV FEDERAL PARANA, CENTRO POLITECNICO, UFPR CENTRO POLITECNICO, CURSO POS…

如何使用云服务器以及宝塔面板快速搭建discuz论坛网站?

前面介绍了很多搭建个人网站,云网盘的方法,这篇文章将介绍使用discuz搭建一个论坛网站,采用的方式为轻量应用服务器搭配宝塔面板一键式部署discuz论坛网站,感兴趣的小伙伴可以跟着我一起搭建起来! 说明: 云…

无线传感器网络:数据链路层,MAC

文章目录FramingByte CountFlag Byte MethodByte StuffingMedium Access Control (MAC)Static Channel AllocationDynamic Channel AllocationIndependent TrafficSingle ChannelObservable CollisionsContinuous or Slotted TimeCarrier Sense or No Carrier SensePure ALOHAS…

react的useState源码分析

前言 简单说下为什么React选择函数式组件,主要是class组件比较冗余、生命周期函数写法不友好,骚写法多,functional组件更符合React编程思想等等等。更具体的可以拜读dan大神的blog。其中Function components capture the rendered values这句…

JWT有状态登陆与无状态登陆

单点登录与JWT JWT 全称: Json Web Token 。作用: JWT 的作用是 用户授权(Authorization) ,而不是用户的身份认证(Authentication) 。用户认证 指的是使用用户名、密码来验证当前用户的身份,即用户登录。用户授权 指用户登录成功后…