【教学类-97-06】20251105“葡萄”橡皮泥黏贴(小班主题《苹果与橘子》)

背景需求:

红色苹果、橙色橘子、黄色生梨,再来个紫色、绿色葡萄

简笔画,白色背景,一串葡萄,没有颜色,正面图

python 复制代码
'''
20250802通义万相2.2下载通义照片 copy
Python下载通义万相的图片(存在问题,不能停止,只能默认下载300张,删除多余)
星火讯飞,阿夏
谷歌页面打开通义万相,页面放大到200%
20251003
'''

import os,time
import pyautogui
import pyperclip
import re
import win32api


import win32con
import sys
import ctypes

import time

name='20251106葡萄'

# 先打开微信


num=1
zs=36
# 实际157

def minimize_active_window():
    try:
        if sys.platform == 'win32':

            # 获取当前活动窗口的句柄
            
            hwnd = ctypes.windll.user32.GetForegroundWindow()
            # 最小化窗口
            ctypes.windll.user32.ShowWindow(hwnd, 6)  # 6 对应 SW_MINIMIZE
            return True
        else:
            print("此功能仅支持Windows系统")
            return False
    except Exception as e:
        print(f"最小化窗口时出错: {e}")
        return False

print("程序运行中...")
time.sleep(2)  # 等待2秒,让你有时间切换到VS Code窗口

# 尝试最小化活动窗口
if minimize_active_window():
    print("窗口已最小化")
else:
    print("无法最小化窗口")




# 读取文件名称和路径

path=fr'D:\{name}'

os.makedirs(path,exist_ok=True)


for i in range(num,num+zs):
    # 下载按钮     
    pyautogui.moveTo(1569, 302)

    pyautogui.click() 
    time.sleep(1)

    # 点击有,无水印要包月    
    pyautogui.moveTo(1573, 373)
    pyautogui.click() 
    time.sleep(2)

    # 输入图片名称,复制中文内容到剪贴板
    name=path+fr'\{i:03}'
    pyperclip.copy(name)
    # 黏贴图片地址
    pyautogui.hotkey('ctrl', 'v')
    time.sleep(1)

    pyautogui.press('enter')
#     # 图片显示需要时间
    time.sleep(1)

    # 模拟按键"右箭头"
      
    pyautogui.moveTo (989, 628)
    pyautogui.click() 
    time.sleep(2)
    #  'left'(左箭头)
    # 'up'(上箭头)
    # 'down'(下箭头)

import sys
import ctypes
import time

def minimize_active_window():
    try:
        if sys.platform == 'win32':
            # 获取当前活动窗口的句柄
            hwnd = ctypes.windll.user32.GetForegroundWindow()
            # 最小化窗口
            ctypes.windll.user32.ShowWindow(hwnd, 6)  # 6 对应 SW_MINIMIZE
            return True
        else:
            print("此功能仅支持Windows系统")
            return False
    except Exception as e:
        print(f"最小化窗口时出错: {e}")
        return False

print("程序运行中...")
time.sleep(2)  # 等待2秒,让你有时间切换到VS Code窗口

# 尝试最小化活动窗口
if minimize_active_window():
    print("窗口已最小化")
else:
    print("无法最小化窗口")

做成200*300的图片

做了两款

python 复制代码
'''
把葡萄做成一页6张
AI对话大师,阿夏
20251106
'''

import random
import math
from PIL import Image, ImageDraw, ImageFont
import os
import time
from docx import Document
from docx.shared import Cm
from docx2pdf import convert
from PyPDF2 import PdfMerger
import shutil

# 测试图片59张
path = r'D:\20251106葡萄'
# 格子一共有几个
sl = 6
# names = f'00原图黑白透明统一尺寸'
names = f'00原图黑白透明拉伸'
input_path = path + fr'\{names}'
mb = '葡萄'
# 表格有2列
L = 2
# 高度和宽度是多少厘米
h = 9.35
# w = 9.35

def check_and_repair_image(image_path):
    """检查并修复图片文件"""
    try:
        with Image.open(image_path) as img:
            img.verify()  # 验证图片完整性
        return True
    except (IOError, SyntaxError, Exception) as e:
        print(f"图片文件损坏: {image_path}, 错误: {e}")
        return False

def get_valid_image_files(input_path):
    """获取有效的图片文件列表"""
    valid_files = []
    for file in os.listdir(input_path):
        if file.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
            file_path = os.path.join(input_path, file)
            if check_and_repair_image(file_path):
                valid_files.append(file_path)
            else:
                print(f"跳过损坏的图片: {file}")
    return valid_files

print('----1、检查图片文件------------')
file_paths = get_valid_image_files(input_path)
print(f"找到 {len(file_paths)} 张有效图片")

if len(file_paths) == 0:
    print("没有找到有效的图片文件,程序退出")
    exit()

grouped_files = [file_paths[i:i+sl] for i in range(0, len(file_paths), sl)]
print(f"分成 {len(grouped_files)} 组")

print('----2、创建临时文件夹------------')
new_folder = path + r'\零时文件夹'
if os.path.exists(new_folder):
    shutil.rmtree(new_folder)
os.makedirs(new_folder, exist_ok=True)

print('----3、插入docx,制作pdf------------')

def create_document_with_images(group, group_index):
    """在已有模板中插入图片"""
    try:
        # 检查模板文件是否存在
        template_path = path + fr'\{mb}.docx'
        if not os.path.exists(template_path):
            print(f"模板文件不存在: {template_path}")
            return False
        
        # 打开模板文档
        doc = Document(template_path)
        
        # 检查文档中是否有表格
        if len(doc.tables) == 0:
            print("模板文档中没有找到表格")
            return False
        
        # 获取第一个表格
        table = doc.tables[0]
        
        # 计算表格的行列数
        rows = len(table.rows)
        cols = len(table.columns)
        total_cells = rows * cols
        
        print(f"表格大小: {rows}行 x {cols}列, 共{total_cells}个单元格")
        
        # 遍历每个单元格,并插入图片
        for cell_index, image_file in enumerate(group):
            if not image_file or not os.path.exists(image_file):
                print(f"图片文件不存在: {image_file}")
                continue
            
            # 如果单元格索引超出表格范围,跳过
            if cell_index >= total_cells:
                print(f"图片数量超过表格容量,跳过第{cell_index + 1}张图片")
                break
            
            # 计算行和列的位置
            row = cell_index // cols
            col = cell_index % cols
            
            # 获取单元格
            cell = table.cell(row, col)
            
            # 清除单元格内容
            for paragraph in cell.paragraphs:
                p = paragraph._element
                p.getparent().remove(p)
            
            # 添加新段落并插入图片
            cell_paragraph = cell.add_paragraph()
            cell_paragraph.alignment = 1  # 居中对齐
            
            run = cell_paragraph.add_run()
            try:
                run.add_picture(image_file, height=Cm(h))
                print(f"成功插入图片到表格位置({row+1},{col+1}): {os.path.basename(image_file)}")
            except Exception as e:
                print(f"插入图片失败 {image_file}: {e}")
                continue
        
        # 保存Word文档
        docx_path = os.path.join(new_folder, f'{group_index + 1:03d}.docx')
        doc.save(docx_path)
        print(f"创建文档成功: {group_index + 1:03d}.docx")
        return True
        
    except Exception as e:
        print(f"创建文档失败 组{group_index + 1}: {e}")
        return False

# 处理每一组图片
success_count = 0
for group_index, group in enumerate(grouped_files):
    if create_document_with_images(group, group_index):
        success_count += 1

print(f"成功创建 {success_count} 个Word文档")

print('----4、转换为PDF------------')
pdf_files = []
if success_count > 0:
    # 获取所有DOCX文件并按数字排序
    docx_files = [f for f in os.listdir(new_folder) if f.endswith('.docx')]
    docx_files.sort()
    
    for docx_file in docx_files:
        docx_path = os.path.join(new_folder, docx_file)
        pdf_path = docx_path.replace('.docx', '.pdf')
        try:
            convert(docx_path, pdf_path)
            pdf_files.append(pdf_path)
            print(f"转换成功: {docx_file} -> {os.path.basename(pdf_path)}")
            time.sleep(0.5)  # 短暂等待避免冲突
        except Exception as e:
            print(f"转换失败 {docx_file}: {e}")

print('----5、合并PDF------------')
if pdf_files:
    # 按文件名排序
    pdf_files.sort()
    
    # 合并PDF
    merger = PdfMerger()
    for pdf_file in pdf_files:
        try:
            merger.append(pdf_file)
            print(f"添加PDF: {os.path.basename(pdf_file)}")
        except Exception as e:
            print(f"添加PDF失败 {pdf_file}: {e}")
    
    # 保存合并后的PDF
    pdf_output_path = path + fr'\{mb[:2]}{names[2:4]}{mb}(A4一页{sl}张)共{len(file_paths)}图 {names}.pdf'
    try:
        merger.write(pdf_output_path)
        merger.close()
        print(f"PDF合并完成: {pdf_output_path}")
    except Exception as e:
        print(f"PDF合并失败: {e}")
else:
    print("没有可合并的PDF文件")

print('----6、清理临时文件------------')
try:
    shutil.rmtree(new_folder)
    print("临时文件夹已清理")
except Exception as e:
    print(f"清理临时文件夹失败: {e}")

print('----程序执行完成------------')

撑满拉伸(葡萄变形拉长椭圆形)

透明统一背景大小(葡萄还是圆形的)

我准备用紫色的轻质彩泥或者圆形紫色纸片,让幼儿搓圆按压成圆形。

我选了原始比例的,那样葡萄之间有白空隙

教学过程:

20251107 小2班 19人

作品整理

彩泥很黏,必须分开摊放

幼儿想把彩泥剥下来,直接把葡萄黑线卷走

贴的泥比较薄,能看出一个个圆

贴的泥很厚,看不出圆形了,都是一整块

(考虑用压出圆形)

​​​​​​​

用花露水的塑料瓶盖,压圆形

压出的圆圈线条比较细,换成固体胶

实验的10号说,她还是喜欢用瓶盖,不喜欢用固体胶

好几位小朋友都来玩玩压圆

肥葡萄也能勉强看到一些圆形的葡萄痕迹了。

相关推荐
2401_844582954 分钟前
软件架构设计与持续重构:模块化开发实战建
python
东莞市云毅网络有限公司26 分钟前
用 SQLite FTS5 给企业知识库做问答检索原型:中文二元切分与 BM25 排序
python·sqlite·自动化运维·geo·数据监测
承渊政道30 分钟前
PR-Agent鸿蒙PC适配全记录:从Python服务端代理到ArkTS原生评审客户端
python·华为·代理模式·agent·harmonyos·pc端
Thomas.Sir31 分钟前
第49课:TensorFlow|项目性能调优全方案【训练提速、推理提速、资源占用优化】
人工智能·python·tensorflow
热爱编程的小李1 小时前
安卫士设备数实时监测警报脚本
python
程序员清风1 小时前
Python 操作 MySQL、Redis 与消息队列的完整实践
redis·python·mysql
Q26433650234 小时前
【有源码】基于 Hadoop 生态的化妆品销售数据存储分析与可视化 面向化妆品行业的用户画像构建与销售机会识别研究
大数据·hadoop·python·机器学习·spark·毕业设计·课程设计
2601_962078199 小时前
Python中calendar.weekday用法
python·编程技巧·calendar·日期处理·weekday
2601_9622186110 小时前
万象生鲜系统业财一体化底层打通技术自动生成经营账单
大数据·数据库·人工智能·python·算法
2601_9669496510 小时前
为什么量化策略需要大量历史股票数据?从回测可信度理解数据规模
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash