背景需求
2023年从网站上搜索拼图代码,陆续改良了圆形、三角形、菱形凹凸)
【教学类-34-05】20230425拼图(“圆角”凹凸拼图)3*4格子(中班主题《个别化拼图》偏美术)_拼图的槽叫什么形状-CSDN博客文章浏览阅读1.1k次。【教学类-34-05】20230425拼图(“圆角”凹凸拼图)3*4格子(中班主题《个别化拼图》偏美术)_拼图的槽叫什么形状https://blog.csdn.net/reasonsummer/article/details/130368494?spm=1011.2415.3001.5331
【教学类-34-07】20230726拼图(“菱形”凹凸拼图)3*4格子(中班主题《个别化拼图》偏美术)https://mpbeta.csdn.net/mp_blog/creation/editor/131936686
【教学类-34-07】20230726拼图(“菱形”凹凸拼图)3*4格子(中班主题《个别化拼图》偏美术)-CSDN博客文章浏览阅读301次。【教学类-34-07】20230726拼图(“菱形”凹凸拼图)3*4格子(中班主题《个别化拼图》偏美术)https://blog.csdn.net/reasonsummer/article/details/131936686?spm=1011.2415.3001.5331【教学类-34-09】20241010“圆角”凹凸拼图)中2班8K图纸绘画 自制A4拼图(3*4)-CSDN博客文章浏览阅读1.6k次,点赞36次,收藏16次。【教学类-34-09】20241010“圆角”凹凸拼图)中2班8K图纸绘画 自制A4拼图(3*4)
https://blog.csdn.net/reasonsummer/article/details/142830903?spm=1011.2415.3001.5331
但是实际操作中,幼儿剪圆形凹凸很困难,对比下来,我觉得三角凹凸(直线)、半圆凹凸(简易弧线)比较适合中班幼儿裁剪,但是一直没有研究出来半圆凹凸
最近用deepseek制作图案描边虚线。感慨它的无穷效率。
于是想把以前的圆形凹凸代码放到deepseek里,看看它是否能写出更优的解,最好能实现三角凹凸。
第1步:图片生成(4:3)
卡通简笔画,白色背景,黑白轮廓线,、鲜艳,彩色,一只蝴蝶,简单,可爱,矢量图,大。
简笔画 强度1 4:3(长方形适配A4纸)
批量生成大量蝴蝶图片
第2步:图片下载
1、获取位置的坐标
(运行后,Vscode界面最小化,就不用延时5秒,手动Vscode最小化)
'''
用Python模拟UIBOT上传园园通照片
需要获取界面上按钮的坐标
'''
import pyautogui
import time# 运行后延时,让鼠标有时间放到指定的按钮上,再获取坐标
# 暂停,把Python页面最小化
# Python VSCODE界面最小化
import sys
import ctypesdef minimize_vscode():try:# Windows 系统if sys.platform == 'win32':hwnd = ctypes.windll.user32.GetForegroundWindow()ctypes.windll.user32.ShowWindow(hwnd, 6) # SW_MINIMIZE = 6# 其他系统可能需要不同的方法except:pass # 忽略错误# 你的主程序代码
print("程序运行中...")
# 程序结束后最小化 VS Code
minimize_vscode()
time.sleep(2)# # 获取鼠标当前位置的坐标
x, y = pyautogui.position()# # 打印坐标
print(f"Mouse position: ({x}, {y})")
2、图片下载:
'''
Python下载通义万相的图片
1(存在问题,不能停止,只能默认下载300张,删除多余)
2、自动最小化VSCode
星火讯飞,阿夏
20250415
'''import os,time
import pyautogui
import pyperclip
import re
import win32api
import win32con''''''# 暂停,把Python页面最小化
# Python VSCODE界面最小化
import sys
import ctypesdef minimize_vscode():try:# Windows 系统if sys.platform == 'win32':hwnd = ctypes.windll.user32.GetForegroundWindow()ctypes.windll.user32.ShowWindow(hwnd, 6) # SW_MINIMIZE = 6# 其他系统可能需要不同的方法except:pass # 忽略错误# 你的主程序代码
print("程序运行中...")
# 程序结束后最小化 VS Code
minimize_vscode()
time.sleep(5)name='彩色蝴蝶'
# 先打开微信# 读取文件名称和路径
path=fr'C:\Users\jg2yXRZ\OneDrive\桌面\{name}'
os.makedirs(path,exist_ok=True)# 打开第一图
pyautogui.moveTo(646, 260)
pyautogui.click()
time.sleep(5)
# 预设照片数量
num=600for i in range(num):# 下载按钮 pyautogui.moveTo(1356, 263)# pyautogui.click() time.sleep(1)# 点击无水印 pyautogui.moveTo(1450, 383)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(1075, 581)pyautogui.click() time.sleep(2)# 'left'(左箭头)# 'up'(上箭头)# 'down'(下箭头)
20250501Python下载通义万相图片
第3步:所有图片修图(背景是白色255.255.255)
【教学类-102-22】蝴蝶彩色1——通义万相“彩色蝴蝶”透明切边基础图片制作(五款板式、批量下载、修图、透明、切边)-CSDN博客文章浏览阅读266次,点赞14次,收藏2次。【教学类-102-22】蝴蝶彩色1——通义万相“彩色蝴蝶”透明切边基础图片制作(五款板式、批量下载、修图、透明、切边)https://blog.csdn.net/reasonsummer/article/details/147660794?spm=1011.2415.3001.5331
'''
把彩色图片修图成(五种板式)
VSCODE界面最小化
1、背景255,255,255
星火讯飞、阿夏1、火狐100%
2、英文状态
20250502'''
import os,time
import pyautogui
import pyperclip
import re
# time.sleep(2)
import win32api
import win32con# 读取文件名称和路径
path=r'D:\20250502彩色蝴蝶'
folder_path = path +r'\16比9'
new_path=path +r'\01蝴蝶彩色白背景'
os.makedirs(new_path,exist_ok=True)
# 图片白色点击位置
# 1:1 (496, 211)
# 4:3 (272, 143)
# 3:4 (548, 169)
# 16:9 (196, 195)
# 9:16 (599, 125)
dj=[(496, 211),(272, 143),(548, 169),(196, 195),(599, 125)]
n=int(input('输入板式 1=1比1;2=4比3;3=3:4;4=16:9;5=9比16\n'))
x1=dj[n-1][0]
y1=dj[n-1][1]
print(x1,y1)# Python VSCODE界面最小化
import sys
import ctypesdef minimize_vscode():try:# Windows 系统if sys.platform == 'win32':hwnd = ctypes.windll.user32.GetForegroundWindow()ctypes.windll.user32.ShowWindow(hwnd, 6) # SW_MINIMIZE = 6# 其他系统可能需要不同的方法except:pass # 忽略错误# 你的主程序代码
print("程序运行中...")
# 程序结束后最小化 VS Code
minimize_vscode()
time.sleep(5)'''
预先打开PS,把页面右侧的图案打开
改成英文输入状态
左边的前后背景改为白/黑
'''file_paths = [os.path.join(folder_path, file_name) for file_name in os.listdir(folder_path)]
print(file_paths)
# 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\20250322班级园园通上传\\特色美术\\19 第19周 主题知识(2025.1.6——2025.1.17)(中2班下学期)-寒冷的冬天1.png']# 不同的切片方式
file_names = os.listdir(folder_path)
print(file_names)
# 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\20250322班级园园通上传\\特色美术\\19 第19周 主题知识(2025.1.6——2025.1.17)(中2班下学期)-寒冷的冬天1.png']for i in range(len(file_paths)):# 打开第一图pyautogui.moveTo(540, 228)pyautogui.click() # 模拟按下 Ctrl# pyautogui.hotkey('Ctrl', 'O')win32api.keybd_event(win32con.VK_CONTROL, 0, 0, 0)# 模拟按下 Mwin32api.keybd_event(ord('O'), 0, 0, 0)# 模拟释放 Mwin32api.keybd_event(ord('O'), 0, win32con.KEYEVENTF_KEYUP, 0)# 模拟释放 Ctrlwin32api.keybd_event(win32con.VK_CONTROL, 0, win32con.KEYEVENTF_KEYUP, 0)# # 打开图片需要时间time.sleep(3)# 输入文件夹网址,复制中文内容到剪贴板pyperclip.copy(folder_path)# 黏贴图片地址pyautogui.hotkey('ctrl', 'v')time.sleep(1)# 打开(回车打开图片)pyautogui.press('enter')# 图片显示需要时间time.sleep(1)# 输入图片名称,复制中文内容到剪贴板pyperclip.copy(file_names[i])# 黏贴图片地址pyautogui.hotkey('ctrl', 'v')time.sleep(1)# 打开(回车打开图片)pyautogui.press('enter')# 图片显示需要时间time.sleep(1)# 选取魔棒 (魔棒快捷键:按键W)# 按下并释放 W 键pyautogui.press('w') # 按下并立即释放# 按住 W 键不放(常用于游戏中的持续移动)pyautogui.keyDown('w') # 按下不放# ... 这里可以添加延迟或其他操作 ...pyautogui.keyUp('w') # 释放按键time.sleep(1) # 鼠标移到左上角的白色 pyautogui.moveTo(x1, y1)pyautogui.click()time.sleep(1) # 新建图层pyautogui.moveTo(1866, 1039)pyautogui.click()time.sleep(1)# 选取魔棒 (魔棒快捷键:按键W)# 按下并释放 W 键pyautogui.press('g') # 按下并立即释放# 按住 W 键不放(常用于游戏中的持续移动)pyautogui.keyDown('g') # 按下不放# ... 这里可以添加延迟或其他操作 ...pyautogui.keyUp('g') # 释放按键# 鼠标移到左上角的白色 pyautogui.moveTo(x1, y1)pyautogui.click()time.sleep(1) # 合并图层pyautogui.hotkey('ctrl', 'E')time.sleep(1)# 取消全选pyautogui.hotkey('ctrl', 'd')time.sleep(1)# 另存为# 方法1:使用 hotkey 函数(推荐)pyautogui.hotkey('shift', 'ctrl', 's')# 方法2:分步操作(更精确控制)pyautogui.keyDown('shift') # 按下Shiftpyautogui.keyDown('ctrl') # 按下Ctrlpyautogui.press('s') # 按下并释放Spyautogui.keyUp('ctrl') # 释放Ctrlpyautogui.keyUp('shift') # 释放Shifttime.sleep(2) # 等待2秒,让你有时间切换到目标窗口# 确保目标窗口已激活NEW=new_path+file_names[i]print(NEW)# 输入文件夹网址,复制中文内容到剪贴板pyperclip.copy(new_path)# 黏贴图片地址pyautogui.hotkey('ctrl', 'v')time.sleep(1)# 打开(回车打开图片)pyautogui.press('enter')# 图片显示需要时间time.sleep(1)# 输入图片名称,复制中文内容到剪贴板pyperclip.copy(file_names[i])# 黏贴图片地址pyautogui.hotkey('ctrl', 'v')time.sleep(1)# 打开(回车打开图片)# pyautogui.press('enter')# 图片显示需要时间time.sleep(1)#,改pngC:\Users\jg2yXRZ\OneDrive\桌面\20250401边缘线剪纸\15蝴蝶三色pyautogui.moveTo(1125, 574)pyautogui.click()time.sleep(2)#,改pngpyautogui.moveTo(947, 768)pyautogui.click()time.sleep(2)# 修改路径# 按回车,出现保存按钮pyautogui.press('enter')# 图片显示需要时间time.sleep(3)# 确认png格式pyautogui.press('enter')# 图片显示需要时间01-07.pngtime.sleep(3)# 关闭图片pyautogui.moveTo(200, 70)pyautogui.click()time.sleep(5)# 否关闭图片pyautogui.moveTo (970, 405)pyautogui.click()time.sleep(2)
视频演示
20250503Python对彩色图片填充白色背景
我设置了1000张,实际蝴蝶大约190张,多余的删除
第4步:统一编号
'''
整理图片的编号,多的图片核对是否要删除
20250502
'''# sz=5
import os
import randompath=r'D:\20250502彩色蝴蝶\01_01蝴蝶彩色白背景'
def rename_images(folder_path):# 获取文件夹中的所有文件files = os.listdir(folder_path)# 过滤出图片文件(假设图片格式为.jpg)image_files = [f for f in files if f.endswith('.png')]# 开始的数字 第001张,改编号# numbers=1000numbers=1# 遍历图片文件并重命名for i, image_file in enumerate(image_files):# 构建新的文件名new_name = f'{numbers:03}.png'# 获取原文件和新文件的完整路径old_path = os.path.join(folder_path, image_file)new_path = os.path.join(folder_path, new_name)# 重命名文件os.rename(old_path, new_path)numbers+=1# 调用函数,传入文件夹路径
rename_images(path)
第5步:做成透明图,切边
'''
把彩色图片(PS背景白色)做成透明,切边图
透明部分改成纯白色,没有任何灰色。
deepseek,阿夏
20250502
'''
from PIL import Image, ImageDraw
import os
import mathprint('------0、基本信息-----')
# 主路径
path = r'D:\20250502彩色蝴蝶'
a='01'
b='蝴蝶彩色'
c='切边图'# 定义文件夹路径
in_folder = os.path.join(path,f'{a}_01{b}白背景') # 原始图片(白背景)
transparent_folder = os.path.join(path, f'{a}_03{b}{c}透明背景') # 透明背景输出
final_folder = os.path.join(path,f'{a}_05{b}{c}切边') # 裁剪后的透明图片# 创建输出文件夹
os.makedirs(transparent_folder, exist_ok=True)
os.makedirs(final_folder, exist_ok=True)print('------2、白色PNG背景变成透明-----')
def process_image_to_transparent(file_path):img = Image.open(file_path)img = img.convert("RGBA")datas = img.getdata()new_data = []for item in datas:if item[0] == 255 and item[1] == 255 and item[2] == 255:new_data.append((255, 255, 255, 0))elif item[0] == 254 and item[1] == 255 and item[2] == 255:new_data.append((254, 255, 255, 0))else:new_data.append(item)img.putdata(new_data)return imgprint("正在转换白背景为透明背景...")
for file_name in os.listdir(in_folder):if file_name.lower().endswith((".png", ".jpg", ".jpeg")):input_file_path = os.path.join(in_folder, file_name)output_file_path = os.path.join(transparent_folder, file_name)processed_image = process_image_to_transparent(input_file_path)processed_image.save(output_file_path)print(f"已处理: {file_name}")