一、下载图片
关键词:卡通简笔画,白色背景,黑白轮廓线,、鲜艳,彩色,一只蝴蝶,简单,可爱,矢量图,大。
简笔画 强度1 4:3(长方形适配A4纸)
五种板式
4:3
3:4
9:16
16:9
1:1
用Python代码下载
'''
Python下载通义万相的图片(存在问题,不能停止,只能默认下载300张,删除多余)
星火讯飞,阿夏
20250415
'''import os,time
import pyautogui
import pyperclip
import re
import win32api
import win32con''''''# 暂停,把Python页面最小化
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下载通义万相图片
二、PS统一白色背景为255.255.255。
用PS把白色背景部分改成纯白色,便于制作透明背景
因为不同图片,所以选择白色背景的坐标点位置不同
每次都要根据板式,选择相应数字,修改点击位置
PS代码
'''
把彩色图片修图成(五种板式)
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)
从“原图”修图后,保存到“白背景”
三、重新编号
可能会删除几张不好看的,导致出现不相连的情况
把确认保留的图片重新按序编号。我想替换保留在源文件夹里。
本来设置从1开始,但是报错了
意思是,已经有文件名字是001.png,如果替换,就会有2个一样001.png。
起始数字改成1000,肯定不会有一样的
原来的编号
1000开始的编号
再把1000改成1,从1开始编号
修改序号的代码
'''
整理图片的编号,多的图片核对是否要删除
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)
总数202张
四、做成透明图,修边
然后就是把1:1、3:4、4:3、16:9、9:16的蝴蝶图做成透明背景,再切边。
'''
把彩色图片(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}")def crop_to_content(img):"""裁剪图片到非透明内容的最小边界"""# 获取图片的alpha通道alpha = img.getchannel('A')# 获取alpha通道的边界框bbox = alpha.getbbox()if bbox:return img.crop(bbox)return img # 如果没有内容,返回原图print('-------切白边-----------')
def process_images():"""完整的图片处理流程"""print("=== 开始裁剪透明白边 ===")for filename in os.listdir(transparent_folder):if filename.lower().endswith('.png'):dotput_path = os.path.join(transparent_folder, filename)croput_path = os.path.join(final_folder, filename)try:img = Image.open(dotput_path).convert('RGBA')cropped = crop_to_content(img)cropped.save(croput_path, format='PNG')print(f"裁剪完成: {filename}")except Exception as e:print(f"裁剪失败 {filename}: {str(e)}")print("\n=== 处理完成 ===")print(f"裁剪后的图片保存在: {final_folder}")if __name__ == '__main__':process_images()