【教学类-55-01】20240511图层顺序挑战(四格长条纸)(4*4)和“手工纸自制参考图”

作品展示

背景需求

空间思维图层挑战2|逻辑推理|空间想象力 - 小红书 (xiaohongshu.com)icon-default.png?t=N7T8https://www.xiaohongshu.com/discovery/item/62cbf6c60000000010026aa0?app_platform=android&ignoreEngage=true&app_version=8.35.0&share_from_user_hidden=true&type=video&author_share=1&xhsshare=WeixinSession&shareRedId=ODszMTs4Nk82NzUyOTgwNjg3OTlHS0xC&apptime=1715478298

我分析一下,这种4*4的格子,横向4或3条长条纸,纵向3或4条长条纸,一共7条不同颜色的四格长纸条。

这么复杂的代码,当然用AI来写了。请AI对话大师,反复写代码的过程用了大概用了1天。

代码展示:

'''
项目:图层顺序挑战-四格长条纸(7张),4*4单元格随机叠放顺序
作者:AI对话大师,阿夏
时间:20240511
'''



from PIL import Image, ImageDraw
import os,random
import itertools


print('--------1、制作图片-----------')
path = r'C:\Users\jg2yXRZ\OneDrive\桌面\重叠纸条'

folder_path = path + r'\jpg'
os.makedirs(folder_path, exist_ok=True)

colors = ['red', 'Yellow', 'green', 'orange', 'lightgreen', 'skyblue','Pink']

for ii in range(1,25):
    
    
    # 创建画布
    canvas_width = 800 
    canvas_height = 800
    canvas_color = (255, 255, 255)  # 白色背景
    line_color = (0, 0, 0)  # 黑色线条
    line_width = 0
    margin = 100  # 边距

    canvas = Image.new('RGB', (canvas_width, canvas_height), canvas_color)
    draw = ImageDraw.Draw(canvas)

    # 计算单元格大小和绘制区域
    num_rows = 4
    num_cols = 4
    cell_size = min((canvas_width - 2 * margin) // num_cols, (canvas_height - 2 * margin) // num_rows)
    start_x = (canvas_width - cell_size * num_cols) // 2
    start_y = (canvas_height - cell_size * num_rows) // 2

    
    # rowcol_all=[]
    row1=[]
    for a1 in range(0,num_rows):
        row1.append(a1)   
    # print(row1)     
    row2 = random.sample(row1, 4)
    # print(row2)
    row3 = random.sample(row1, 3)
    # print(row3)

    rowcol_all=row2+row3

    # 随机颜色
    color = random.sample(colors,7)
    print(color)

   # 绘制单元格和正方形,并填充颜色
    for row in range(num_rows):
        for col in range(num_cols):
            x = start_x + col * cell_size
            y = start_y + row * cell_size
            square_size = cell_size            
            
               # 前行4 后列3
                       # 2      
            if row == rowcol_all[0]:  # 第2行填充红色
                square_color = color[0]
            if col == rowcol_all[4]:  # 第1列填充黄色
                square_color = color[1]
            if row == rowcol_all[1]:  # 第3行填充紫色
                square_color = color[2]
            if col == rowcol_all[5]:  # 第2列填充黑色
                square_color = color[3]
            if row == rowcol_all[2]:  # 第1行填充粉色
                square_color = color[4]
            if col == rowcol_all[6]:  # 第4列填充蓝色
                square_color = color[5]
            if row == rowcol_all[3]:  # 第4行填充绿色
                square_color = color[6]
                
            draw.rectangle([(x, y), (x + square_size, y + square_size)], fill=square_color, outline=line_color, width=line_width)

    # 保存图像彩色图片
    canvas.save(folder_path + fr'\{ii:02d}.png')
    rowcol_all.clear()

print('--------2、png 合并pdf-----------')
import os
from PIL import Image
from reportlab.lib.pagesizes import A4
from reportlab.lib.utils import ImageReader
from reportlab.pdfgen import canvas

# 获取文件夹中的所有PNG图片文件
image_files = [file for file in os.listdir(folder_path) if file.endswith('.png')]

# 创建一个新的PDF文件
pdf_file = path + r'\重叠纸条底图.pdf'  # 替换为实际的输出PDF文件路径
c = canvas.Canvas(pdf_file, pagesize=A4)

# 遍历每个PNG图片文件并将其添加到PDF中
for image_file in image_files:
    image_path = os.path.join(folder_path, image_file)
    image = Image.open(image_path)
    image_reader = ImageReader(image)
    c.setPageSize(A4)
    c.drawImage(image_reader, 0, 0, width=A4[0], height=A4[1])
    c.showPage()

# 保存并关闭PDF文件
c.save()

终端显示:

结果呈现

虽然做了图片合并PDF,但是我没有打印。

一、制作参考图:

问题:本来参考图想用彩色打印的,但是比较浪费墨,放弃

解决1:用蜡笔涂色——不一定正好有打印的7种颜色、蜡笔画的边线不整齐,放弃

解决2:用丙烯马克笔——不一定正好有打印的7种颜色、画笔费墨(容易用光颜色)涂色容易出线框。

解决3:用彩色手工纸——先用裁纸机将切好纸片大小,然后黏贴。

小结:用彩色手工纸拼贴参考图,确保了7种颜色的统一性。不涂色,不裁剪,精准性、美观性更强。

二、制作参考图的空白模板

首先需要有一个空白模板,我生成24张图片,就预设A4一页上有6个参考图

代码展示:

'''
项目:图层顺序挑战-四格长条纸4*4单元格空白模板制作,顶部有题目序号
作者:AI对话大师,阿夏
时间:20240511
'''

import os,time
import shutil
from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn
from PyPDF2 import PdfMerger

def set_font(run, font_name):
    rPr = run._r.get_or_add_rPr()
    rFonts = rPr.get_or_add_rFonts()
    rFonts.set(qn('w:eastAsia'), font_name)

path = r'C:\Users\jg2yXRZ\OneDrive\桌面\重叠纸条'
folder_path = os.path.join(path, 'jpg')  # 文件夹路径

name = []

# 遍历文件夹中的所有文件
for filename in os.listdir(folder_path):
    # 判断文件是否为图片文件
    if filename.endswith('.jpg') or filename.endswith('.jpeg') or filename.endswith('.png'):
        # 输出图片文件的名称
        n = f'空间思维(4格)-{filename[:-4]}(     )'
        name.append(n)

# 将名称列表分成每组6个元素
name_groups = [name[i:i+6] for i in range(0, len(name), 6)]
print(name_groups)

# 读取模板.docx的第一个表格
doc_path = os.path.join(path, '模板.docx')
doc = Document(doc_path)
table = doc.tables[0]

out_path = os.path.join(path, 'lingshi')
os.makedirs(out_path, exist_ok=True)

# 添加自定义字体
custom_font_path = r"C:\Windows\Fonts\simhei.ttf"  # 替换为正确的字体文件路径
font_name = "SimHei"  # 替换为正确的字体名称 
doc.styles['Normal'].font.name = font_name

# 在指定单元格插入文本
rows = [0, 0, 5, 5, 10, 10]
cols = [0, 4, 0, 4, 0, 4]

for texts in range(len(name_groups)):
    for i in range(len(rows)):
        row = rows[i]
        col = cols[i]
        text = name_groups[texts][i]

        cell = table.cell(row, col)
        cell.text = text

        # 设置文本样式
        paragraph = cell.paragraphs[0]
        run = paragraph.runs[0]
        run.font.name = font_name
        run.font.bold = True
        run.font.size = Pt(12)
        paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

  



    from docx2pdf import convert

    # 将已存在的DOCX文件另存为PDF
    new_doc_path = os.path.join(out_path, f'{texts+1:02d}.docx')
    doc.save(new_doc_path)

    pdf_path = os.path.join(out_path, f'{texts+1:02d}.pdf')
    convert(new_doc_path, pdf_path)
    time.sleep(1)


from PyPDF2 import PdfFileMerger
import shutil

# 获取out_path文件夹中的所有PDF文件路径
pdf_files = [file for file in os.listdir(out_path) if file.endswith('.pdf')]

# 创建一个PdfFileMerger对象
merger = PdfFileMerger()

# 逐个添加PDF文件到合并器中
for file in pdf_files:
    pdf_path = os.path.join(out_path, file)
    merger.append(pdf_path)

# 执行合并操作并保存为新的PDF文件
merged_pdf_path = os.path.join(path, '(重叠纸条4宫格24张.PDF')
merger.write(merged_pdf_path)
merger.close()

# 删除out_path文件夹及其内容
shutil.rmtree(out_path)

生成结果

幼儿自制图层挑战(长条)参考图

时间::2024年5月11日(周六)

班级:中4

人数:2人(传染病隔离)

1、材料准备:

把空白参考图打印,切割成小张

2、切割手工纸1(做题时的大号纸条)

2、切割手工纸2(做参考图时的小号纸条)

15Cm纸条切成8和7,宽度都是2CM

二、幼儿制作:

24张参考图都完成后,参考图和操作彩色纸条都进行塑封和裁剪(圆角),

存在问题:

1、叠放顺序相同:

在幼儿用小纸片黏贴参考图的过程中,我发现有两张图片的叠放顺序相同

因此代码需要进一步研究,排除重复

2

2、只有4行3列填充样式

3、无法增加一整个矩形框(边框线条粗细0)

目前代码显示都是一个单元格的颜色填充,如果添加边框粗细2磅,会是一个单元格出现黑色边框,而不是整个一行或一列加上一整条黑色边框。

我想要的效果是一下这样的:

思路:通过查找行列第1格的“左上角坐标”画一个新的矩形填充颜色,层层叠加。

后续重点:

1、排除重复的重叠方式

2、色块做成长矩形

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习第37周周报 GGNN

文章目录 week37 GGNN摘要Abstract一、文献阅读1. 题目2. abstract3. 网络架构3.1 数据处理部分3.2 门控图神经网络3.3 掩码操作 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过程4.3.1 传感器设置策略4.3.2 数据集4.3.3 实验设置4.3.4 模型参数设置4.3.5 实验结果 5. 结论 …

【linux】详解linux基本指令

目录 cat more less head tail 时间 cal find grep zip/unzip tar bc uname –r 关机 小编一共写了两篇linux基本指令,这两篇涵盖了大部分初学者的必备指令,这是第二篇,第一篇详见http://t.csdnimg.cn/HRlVt cat 适合查看小文…

JAVA 标准接口返回与i18n国际化配置

不喜欢废话直接上代码 标准通用返回 package com.luojie.common;import com.luojie.common.inter.ResponseCommon; import lombok.Data;Data public class ResponseCommonImpl implements ResponseCommon {int code;String msg;Object entity; }package com.luojie.common;im…

vue 中的 Vuex

Vuex Vuex是什么? 概念:专门在vue中实现集中式状态(数据)管理的一个Vue插件,对Vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间…

【NTN 卫星通信】参考卫星集成场景和架构

1 卫星接入场景 1.1 同一PLMN内的卫星和地面接入网 一个PLMN可以同时具有地面3GPP接入和卫星3GPP接入。在此场景中,单独的N2实例处理单独的访问类型节点。然而,卫星接入网的覆盖范围可以跨越地面接入网的覆盖范围。 图1 同PLMN架构下的卫星和地面3GPP接…

如何在matlab时间序列中X轴标注月-日

一般我们使用的时间序列都是以年为单位,比如下图: 而如果要绘制月尺度的时间变化图,则需要调整X轴的标注。下面代码展示了如何绘制小时尺度的降水数据。 [sname2,lon2,lat2] kml2xy(GZ_.kml); nc_bound2 [lon2,lat2]; area_ind2inpolygon(e…

# 从浅入深 学习 SpringCloud 微服务架构(十六)

从浅入深 学习 SpringCloud 微服务架构(十六) 一、SpringCloudStream:自定义消息通道 1、在子工程 stream_product (子模块)中,创建 自定义的消息通道类 MyProcessor.java /*** spring_cloud_demo\stream_product…

【大数据·Hadoop】从词频统计由浅入深介绍MapReduce分布式计算的设计思想和原理

一、引入:词频统计问题 假如我们有一亿份文档,需要统计这一亿份文档的词频。我们会怎么做,有以下思路 使用单台PC执行:能不能存的下不说,串行计算,一份一份文档读,然后进行词频统计&#xff0…

【35分钟掌握金融风控策略23】定额策略

目录 定额策略 定额策略的开发、部署、监控和调优 定额策略开发 定额策略部署 定额策略监控 定额策略调优 定额策略 定额是对授信审批通过的客户给予合适授信额度的过程。如何定额、定多少额度是由定额策略来决定的。定额的多少与客户未来的动支情况、逾期情况和最终的收…

基于鹈鹕优化算法POA的复杂城市地形下无人机避障三维航迹规划,可以修改障碍物及起始点(Matlab代码)

复杂城市地形下无人机避障三维航迹规划是指在城市等高密度区域内,通过无人机的传感器和导航系统来实现飞行路径的规划和调整,从而避免无人机与建筑物、其他无人机、地面障碍物等发生碰撞和冲突。具体来说,无人机需要实时感知周围环境&#xf…

【报错合集】完美解决“虚拟机使用的是此版本 VMware Workstation 不支持的硬件版本”

文章目录 解决方案:更改设置的硬件版本 今天我需要将别人的虚拟机克隆到我的VMware Workstation上运行,结果发生了以下的错误: 刚开始以为是VMware Workstation的版本问题太低导致的,所以我删除了原来的那个版本,下载…

MySQL数据库的初始化(创建库、创建表、向数据库添加测试数据)

MySQL数据库的初始化(创建库、创建表、向数据库添加测试数据) MySQL数据库简介MySQL创建一个新的数据库MySQL创建一张新的数据表简单(设置)表复杂(设置)表 填充测试数据SQL语句mysql>模式下输入的每句sq…

用 Python 和 AkShare 进行个股数据清洗:简易多功能方法

标题:用 Python 和 AkShare 进行个股数据清洗:简易多功能方法 简介: 本文介绍了如何使用 Python 和 AkShare 库对个股数据进行清洗和处理。个股数据经常需要进行清洗以用于分析、建模或可视化。我们将介绍一些简单但功能强大的方法,包括数据加载、缺失值处理、重复值检测和…

后端项目开发笔记

Maven打包与JDK版本不对应解决方法 我这里使用jdk8。 <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configurat…

未授权访问:MongoDB未授权访问漏洞

目录 1、漏洞原理 2、环境搭建 3、未授权访问 防御手段 今天继续学习各种未授权访问的知识和相关的实操实验&#xff0c;一共有好多篇&#xff0c;内容主要是参考先知社区的一位大佬的关于未授权访问的好文章&#xff0c;还有其他大佬总结好的文章&#xff1a; 这里附上大佬…

MySQL性能优化(提升数据库性能的措施)

万物皆有裂痕&#xff0c;那是光照进来的地方。大家好&#xff0c;今天给大家分享一下关于MySQL性能优化&#xff0c;在处理大型数据集和高负载情况下&#xff0c;MySQL数据库的性能优化是至关重要的。通过合理的调优策略&#xff0c;可以有效提高数据库的响应速度和稳定性。本…

【JavaEE初阶系列】——Cookie和Session应用之实现登录页面

目录 &#x1f6a9;本章目标 1.登录页面 2.servlet处理上述的登录请求 3.网站主页(成功登录之后的页面&#xff09; &#x1f6a9;实现过程 &#x1f393;登录页面 &#x1f393;Servlet处理登录请求 &#x1f388;获取请求传来的参数(用户名和密码) &#x1f388;验证…

引入Minio

前置条件 官网&#xff1a;https://www.minio.org.cn/download.shtml#/kubernetes 命令 # 查看系统上的网络连接和监听端口信息 netstat -tpnl # 检查系统的指定端口占用情况 sudo netstat -tuln | grep 9000systemctl status firewalld # 临时关闭 systemctl stop firewall…

计算机的存储体系与性能,存储黑科技大揭秘

计算机体系结构&#xff0c;其中存储分为内存与硬盘。内存&#xff0c;非持久化存储&#xff0c;临时存数&#xff0c;断电即失&#xff1b;硬盘&#xff0c;持久化存储&#xff0c;数据长存&#xff0c;即使断电也无忧。 计算机存储种类繁多&#xff0c;分为内部与外部两类。…

机器学习周记(第三十八周:语义分割)2024.5.6~2024.5.12

目录 摘要 ABSTRACT 1 DeeplabV3实现思路 预测部分 ①主干网络介绍​编辑 ② 加强特征提取结构 ③ 利用特征获得预测结果 摘要 本周继续了语义分割的学习&#xff0c;主要学习了DeepLabV3的部分实现思路&#xff0c;即DeepLabV3的整个模型的预测过程&#xff0c;并通过代…