【教学类-102-11】蝴蝶外轮廓01——Python对黑白图片进行PS填充三种颜色+图案描边+图案填充白色+制作1图2图6图24图

背景需求:

用Python,对白色255背景的图片进行了透明化、制作点状或线段的描边裁剪线

【教学类-102-10】剪纸图案全套代码09——Python线条虚线优化版04(原图放大白背景)+制作1图2图6图24图-优快云博客文章浏览阅读1k次,点赞27次,收藏8次。【教学类-102-10】剪纸图案全套代码09——Python线条虚线优化版04(原图放大白背景)+制作1图2图6图24图 https://blog.youkuaiyun.com/reasonsummer/article/details/147189382?spm=1011.2415.3001.5331【教学类-102-09】剪纸图案全套代码08——Python点状虚线优化版本03(原图放大白背景)+制作1图2图6图24图-优快云博客文章浏览阅读1.1k次,点赞22次,收藏6次。【教学类-102-09】剪纸图案全套代码08——Python点状虚线优化版本03(原图放大白背景)+制作1图2图6图24图 https://blog.youkuaiyun.com/reasonsummer/article/details/147165562?spm=1011.2415.3001.5331

用代码做了一套183张的蝴蝶图片(用了8个小时才生成完)

我联想到最近美工室用的一套蝴蝶材料

黑色卡纸,对称折叠,在一侧挤压颜料,然后对折按压,会出现对称的图案颜色

因为比较有趣,所以50张黑色卡纸马上就要用完了。

因此我想:既然我有183张蝴蝶黑白图片,是否可以提取它的轮廓线,然后自制一些不同造型的卡纸蝴蝶模版纸?

通过研究,发现首先我需要把图片PS修成三种颜色。

为此用Python写了一个模拟操作PS修图的代码

代码展示(PS修图,填充三种颜色)

'''
把黑白图片修图成
1、背景255,255,255
2、黑线图案0,0,0
3、黑线内部白色图案255,255,244
星火讯飞、阿夏

1、火狐100%
2、英文状态
20250424

'''
import os,time
import pyautogui
import pyperclip
import re

import os,time
import pyautogui
import pyperclip
import re
# time.sleep(2)
import win32api
import win32con

time.sleep(5)

'''
预先打开PS,把页面右侧的图案打开
改成英文输入状态
打开时黑白切换选择是白上黑下255和0
'''


# 读取文件名称和路径
path=r'C:\Users\jg2yXRZ\OneDrive\桌面\20250401边缘线剪纸'
folder_path = path +r'\15蝴蝶三色'
new_path=path +r'\15_01蝴蝶三色白背景'
os.makedirs(new_path,exist_ok=True)

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)
    # 模拟按下 M
    win32api.keybd_event(ord('O'), 0, 0, 0)
    # 模拟释放 M
    win32api.keybd_event(ord('O'), 0, win32con.KEYEVENTF_KEYUP, 0)
    # 模拟释放 Ctrl
    win32api.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')   # 释放按键

    # 选取图片左上角的白色    
    pyautogui.moveTo(506, 219)
    pyautogui.click()
    time.sleep(1)

    # 选取相似  按下 Shift+Ctrl+R
    # 按下 选择 
    pyautogui.hotkey('alt', 's')
    time.sleep(1)
    # 按下 修改
    pyautogui.press('R')  # 按下并立即释放
    time.sleep(1)
    

    # 新建图层
    pyautogui.moveTo(1866, 1039)
    pyautogui.click()
    time.sleep(1)


    # 选择白色255,,255,244C:\Users\jg2yXRZ\OneDrive\桌面\20250401边缘线剪纸\15_01蝴蝶三色白背景
    # 点击白色黑色的白色
    pyautogui.moveTo(11,643)
    pyautogui.click()
    time.sleep(1)

    # R部分是选中的
    pyperclip.copy('0')
    # R从255改成254
    pyautogui.hotkey('ctrl', 'v')
    time.sleep(1)
    # # 确认gg
    pyautogui.press('enter')
    time.sleep(1)
    

    
    # 填充颜色油漆桶G
    # 按下并释放 W 键
     # 按下并释放 W 键

    pyautogui.press('g')  # 按下并立即释放
    # 按住 W 键不放(常用于游戏中的持续移动)
    pyautogui.keyDown('g')  # 按下不放
    # # ... 这里可以添加延迟或其他操作 ...
    pyautogui.keyUp('g')   # 释放按键
    time.sleep(3)
   
   # 鼠标移到左上角的白色    
    pyautogui.moveTo(506, 219)
    pyautogui.click()
    time.sleep(2)

    # 反选  按下 Shift+Ctrl+I 选中所有黑色部分
    pyautogui.hotkey('shift', 'ctrl', 'I')
    time.sleep(1)

    # 更改颜色(点击黑色白色按钮的黑色的交换按钮)
    pyautogui.moveTo(27,625)
    pyautogui.click()
    time.sleep(1)    

    # 此时还是G油漆桶(实际没有被选为0,0,0,因为鼠标不一定在黑色框选范围内)
    # 鼠标移到左上角的白色 上,因为选中的虚线范围,直接填充G 
    
    # 填充颜色油漆桶G
    # 按下并释放 W 键
    pyautogui.press('g
<think> 首先,用户的问题是:“Graphics2D 怎么设置无颜色填充白色边框”,这是关于Java中的Graphics2D的问题。用户想知道如何在绘制形时设置没有填充颜色(即透明或无色填充),以及边框为白色。 我需要用中文回答问题,因为用户在开头指定了“请使用中文回答问题”。 关键点: - 设置无颜色填充:这意味着禁用填充,或者使用透明颜色填充- 白色边框:设置边框颜色白色。 在Java Graphics2D中: - 填充颜色通过`setPaint(Paint paint)`方法设置,或者更具体的`setColor(Color color)`用于简单颜色- 边框颜色通过`setColor(Color color)`影响描边颜色,但边框通常是通过`draw`方法绘制的,而不是`fill`方法。 - 对于填充颜色,我可以设置填充颜色为透明颜色,例如`new Color(0, 0, 0, 0)`(RGBA,其中A是alpha通道为0表示透明)。 - 对于边框为白色,设置描边颜色为`Color.WHITE`。 步骤: 1. 设置填充颜色为透明。 2. 设置描边颜色白色。 3. 然后绘制形(如drawRect或fillRect,但既然是无填充,我会使用draw方法来画边框)。 用户说“无颜色填充白色边框”,这可能意味着在绘制形时,只画边框不填充。所以在代码中,我需要使用`draw`方法而不是`fill`方法。 例如,对于矩形: - 设置填充颜色为透明:`g2d.setPaint(new Color(0, 0, 0, 0));` - 设置描边颜色白色:`g2d.setColor(Color.WHITE);` (因为`setColor`设置当前颜色,影响描边和文本) - 然后画边框:`g2d.drawRect(x, y, width, height);` 实际上,在Graphics2D中: - `setPaint`用于设置填充颜色- `setStroke`用于设置描边的样式(如宽度)。 - `setColor`是Graphics的遗留方法,通常等同于设置当前颜色,但对于Graphics2D,最好使用`setPaint`来控制颜色。 为了更准确: - 要禁用填充,可以直接不调用`fill`方法,只调用`draw`方法。 - 但用户指定“设置”,所以我需要展示如何设置颜色属性。 最佳实践: - 设置描边颜色白色:`g2d.setColor(Color.WHITE);` - 由于无填充,我不会设置填充颜色;或者设置填充颜色为透明,但调用`draw`方法时不需要填充- 为了完整,我可以设置填充颜色为透明。 在回答中,我应该提供简洁的代码示例。 现在,关于格式: - 我必须用中文回答问题。 - 在回答末尾,必须提出3-5个相关问题。 - 第一行必须是“§§相关问题§§”。 - 相关问题必须输出在末尾,并且不能换行分散。 - 基于用户的问题和我的回答提出问题。 回顾示例格式: - 示例中,回答问题后,有代码块。 - 然后输出“§§相关问题§§”后跟相关问题列表。 在我的回答中: 1. 先回答问题。 2. 提供代码示例(如果需要)。 3. 然后结束回答。 4. 最后输出“§§相关问题§§”后跟相关问题。 相关问题: - 我需要基于用户的问题:“Graphics2D 怎么设置无颜色填充白色边框”和我的回答提出3-5个相关问题。 - 问题应该相关,比如关于Graphics2D的其他设置,或似问题。 - 例如: 1. 如何在Graphics2D中设置边框宽度? 2. 如何绘制其他形状,如圆形,无填充有边框? 3. Graphics2D中如何使用自定义颜色? 4. 如何设置透明填充但不是边框? 5. Graphics2D与Graphics的区别是什么? 确保问题是相关的和有用的。 结构化我的回答: - 开头:用中文解释如何设置。 - 提供代码片段(用Python?等等,用户的问题是关于Java的Graphics2D,但示例中是Python代码。用户说“Graphics2D”,这是Java的,所以我应该使用Java代码。 用户示例中是Python代码,但用户的问题是“Graphics2D”,这是Java AWT/Swing中的。我应该使用Java代码。 在回答中: ```java Graphics2D g2d = (Graphics2D) g; // assuming g is a Graphics object g2d.setColor(Color.WHITE); // 设置边框颜色白色 // 对于无填充,使用draw方法而不是fill g2d.drawRect(x, y, width, height); // 绘制矩形边框为白色 ``` 要明确设置填充颜色,但由于`draw`方法不填充,所以不需要设置填充颜色。但为了完整性,我可以提到。 最终回应: - 解释:要设置无颜色填充(即不填充)和白色边框,你需要设置描边颜色白色,并使用draw方法来绘制形。 - 代码示例: ```java // 设置边框颜色白色 g2d.setColor(Color.WHITE); // 绘制矩形边框,无填充 g2d.drawRect(50, 50, 100, 100); ``` 或者更精确地,使用`setStroke`来设置线条样式。 相关问题: 1. 如何在Graphics2D中改变边框的宽度? 2. 如何绘制圆形而不是矩形,同样无填充白色边框? 3. Graphics2D中如何设置背景透明? 4. 什么是Graphics2D的其他常用绘方法? 5. 如何在Java Swing中使用Graphics2D绘制复杂形? 确保3-5个问题。 输出格式: - 回答结束。 - 然后“§§相关问题§§” - 直接列出问题,用数字点,如示例“1. ··· \n2. ···”等。 - 不要换行分散,意思是相关问题列表应该连续输出,没有多余换行。 完整响应: - 先用中文回答。 - 提供代码块。 - 然后“§§相关问题§§” - 后跟相关问题列表。 </think> 在 Java 中使用 `Graphics2D` 设置无颜色填充(透明填充)和白色边框的方法如下: - **无颜色填充**:不需要设置填充颜色,或者显式使用透明颜色(如 `new Color(0, 0, 0, 0)`),然后调用 `draw` 方法而非 `fill` 方法。 - **白色边框**:通过 `setColor(Color.WHITE)` 设置描边颜色白色。 代码示例: ```java // 假设 g2d 是 Graphics2D 对象 Graphics2D g2d = (Graphics2D) g; // 从 Graphics 对象转换而来 // 设置边框颜色白色 g2d.setColor(Color.WHITE); // 绘制矩形边框(无填充) g2d.drawRect(50, 50, 100, 100); // x, y, width, height ``` 说明: - 使用 `drawRect`(而不是 `fillRect`)确保只绘制边框,不填充内容。 - 如果需要自定义边框宽度,可用 `g2d.setStroke(new BasicStroke(2.0f));` 设置线条粗细。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿夏reasonsummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值