【教学类-102-22】蝴蝶彩色1——通义万相“彩色蝴蝶”透明切边基础图片制作(五款板式、批量下载、修图、透明、切边)

一、下载图片

关键词:卡通简笔画,白色背景,黑白轮廓线,、鲜艳,彩色,一只蝴蝶,简单,可爱,矢量图,大。

简笔画    强度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()

一、透明图

做成透明图(下载图片时的原始大小)

二、切边图(图案最大化)

这下无论1:1、3:4、4:3、16:9、9:16的图片,都按照图案的最大长宽,切出了最大的图案。作为制作的基础素材了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JAVA】方法定义与重载:JVM方法调用机制(8)

核心知识点详细解释 Java方法的定义和使用 在Java中,方法是一段具有特定功能的代码块,它可以接受参数并返回一个值。方法的定义包括方法的修饰符、返回类型、方法名、参数列表和方法体。其基本语法如下: 修饰符 返回类型 方法名(参数列表)…

基于STM32的带恒温系统智能外卖柜设计

标题:基于STM32的带恒温系统智能外卖柜设计 内容:1.摘要 随着外卖行业的迅速发展,对外卖存放设备的智能化和功能性要求日益提高。本设计的目的是开发一种基于STM32的带恒温系统智能外卖柜。方法上,以STM32微控制器为核心,结合温度传感器、加…

【综述】相位解包裹算法对比分析

引言 相位解包裹是基于干涉的位相测量技术中的重要环节,如合成孔径雷达干涉、光学干涉测量技术、医学成像技术、数字全息三维成像、相干衍射成像等技术中都涉及位相解包裹。位相解包裹也称为位相展开、位相解截断、位相解缠绕等。与之相反的过程谓之包裹位相、截断…

Rust 学习笔记:关于枚举与模式匹配的练习题

Rust 学习笔记:关于枚举与模式匹配的练习题 Rust 学习笔记:关于枚举与模式匹配的练习题以下程序能否通过编译?若能,输出是什么?考虑这两种表示结果类型的方式,若计算成功,则包含值 T&#xff1b…

C++负载均衡远程调用学习之QPS性能测试

目录 1.昨日回顾 2.QPS_TEST_PROTOBUF协议的集成 3.QPS_TEST_SERVER端实现 4.QPS_TEST_QPS简单介绍 5.QPS_TEST_QPS客户端工具编写和性能测试 1.昨日回顾 2.QPS_TEST_PROTOBUF协议的集成 ## 14) Reactor框架QPS性能测试 ​ 接下来我们写一个测试用例来测一下我们…

【MySQL数据库】视图

1,视图的基本介绍 视图是一个虚拟表,其内容由查询定义。与真实表一样的是,视图包含带有名称的列和行数据;与真实表不一样的是,视图本身并不在数据库中存储数据。视图的数据变化会影响到基表,基表的数据变化…

Linux系统安装方式+适合初学者的发行版本

Linux系统安装方式适合初学者发行版—目录 一、Linux系统的安装方式1. 物理机直接安装2. 虚拟机安装3. 双系统安装4. Live USB试用5. 云服务器安装 二、适合初学者的Linux发行版1. Ubuntu2. Linux Mint3. Zorin OS4. Pop!_OS5. Elementary OS6. Fedora7. Manjaro 三、选择建议场…

Linux C++ JNI封装、打包成jar包供Java调用详细介绍

在前面 Android专栏 中详细介绍了如何在Android Studio中调用通过jni封装的c库。 在Android使用 opencv c代码,需要准备opencv4android,也就是c的任何代码,是使用Android NDK编译的,相当于在windows/mac上使用Android stdido交叉…

4.1 模块概述

1.Python结构 工程 > 包 > 模块 Python工程: “Python项目中最大的文件夹(本质就是一个文件夹)” --- 左侧的 CODE文件夹 为Python工程 Python包: 本质就是一个文件夹,但是python包中具备具体的标识,如果没有标识则不能导入 --- 左侧的 01.Python基础 文件夹为python包 P…

AJAX 实例

AJAX 实例 引言 Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术。Ajax通过在后台与服务器交换数据,实现了页面的动态更新,从而提高了用户体验和…

相机的基础架构

📷 相机相关基础架构学习路径 一、了解手机相机系统架构 Android Camera HAL(如果你是做 Android 平台) 学习 Camera HAL3 架构(基于 camera_device_t, camera3_device_ops 接口) 熟悉 CameraService → CameraProvid…

MLX Chat - 基于 Streamlit 的 MLX 前端界面

本文翻译整理自:https://github.com/da-z/mlx-ui 一、关于 MLX Chat 一个基于 Streamlit 的简单 UI/网页前端,用于 MLX mlx-lm 项目。 相关链接资源 github : https://github.com/da-z/mlx-uiMLX 社区模型库:https://huggingface.co/mlx-co…

el-table 自定义列、自定义数据

一、对象数组格式自定义拆分为N列 1-1、数据格式: const arrayList ref([{"RACK_NO": "A-1-001"},{"RACK_NO": "A-1-002"},{ "RACK_NO": "A-1-003"},//省略多个{"RACK_NO": "A-1-100…

JVM 如何使用性能分析工具定位代码中的性能问题?

核心思想: 通过工具观察程序在特定负载下的运行状态,识别消耗资源最多的代码段(热点代码)、异常的内存分配模式或线程阻塞情况,然后针对性的优化代码。 通用步骤: 确定问题: 首先明确遇到了什…

Python虚假新闻检测识别

程序示例精选 Python虚假新闻检测识别 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《Python虚假新闻检测识别》编写代码,代码整洁,规则,易读。 学习与应…

网络原理 - 12(HTTP/HTTPS - 3 - 响应)

目录 认识“状态码”(status code) 200 OK 404 Not Found 403 Forbidden 405 Method Not Allowed 500 Internal Server Error 504 Gateway Timeout 302 Move temporarily 301 Moved Permanently 418 I am a teaport 状态码小结: …

Spring Boot中集成Guava Cache或者Caffeine

一、在Spring Boot(1.x版本)中集成Guava Cache 注意&#xff1a; Spring Boot 2.x用户&#xff1a;优先使用Caffeine&#xff0c;性能更优且维护活跃。 1. 添加依赖 在pom.xml中添加Guava依赖&#xff1a; <dependency><groupId>com.google.guava</groupId&…

Linux工作台文件操作命令全流程解析

全文目录 1 确认当前工作路径2 导航与目录管理2.1 关键命令2.2 逻辑衔接 3 文件基础操作3.1 创建 → 备份 → 重命名 → 清理3.2 文件查看和编辑3.3 文件链接3.4 文件diff 4 文件权限与所有权管理5 文件打包与归档6 参考文献 写在前面 shell是一种命令解释器&#xff0c;它提供…

LeetCode第183题_从不订购的客户

LeetCode 第183题&#xff1a;从不订购的客户 题目描述 表: Customers ---------------------- | Column Name | Type | ---------------------- | id | int | | name | varchar | ---------------------- id 是该表的主键。 该表包含消费者的 id 和…

c语言的常用关键字

c语言的常用关键字 c语言的关键字表示数据类型的关键字autocharfloatdoubleintlongshortvoidsignedstruct、enum、unionunsigned 表示分支语句的关键字ifelseswitchbreakcasecontinuedefault 表示循环语句的关键字whiledoforgoto 用于修饰变量或函数的关键字constconst修饰变量…