背景需求
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}")