【教学类-102-02】自制剪纸图案(留白边、沿线剪)02——Python+PS自动化添加虚线边框

背景需求:

01版本实现了对透明背景png图案边界线的扩展,黑线实线描边

【教学类-102-01】自制剪纸图案(留白边、沿线剪)01-CSDN博客文章浏览阅读974次,点赞15次,收藏7次。【教学类-102-01】自制剪纸图案(留白边、沿线剪)01 https://blog.csdn.net/reasonsummer/article/details/146923140?spm=1011.2415.3001.5331

但是我希望图案边缘是点状

图案边缘是虚线

搜索,发现PS可以制作虚线边框

ps虚线框怎么做

https://jingyan.baidu.com/article/b7001fe118b2714f7382dd5d.htmlhttps://jingyan.baidu.com/article/b7001fe118b2714f7382dd5d.html

PS将用路径选区,制作虚线边框。

解决思路:

1、python模拟人工,在PS软件中重复按快捷键,对图案进行边缘扩展、制作选区、制作虚线描边。

2、uibot可以自动查找坐标位置,但python不行,需要一个个测试坐标位置

'''
用Python模拟UIBOT上传园园通照片
需要获取界面上按钮的坐标
'''
import pyautogui
import time# 运行后延时,让鼠标有时间放到指定的按钮上,再获取坐标
time.sleep(2)
# # 获取鼠标当前位置的坐标
x, y = pyautogui.position()# # 打印坐标
print(f"Mouse position: ({x}, {y})")

3、预先打开PS,将各种页面参数设置好

本次我需要虚线边框3磅黑线,透明背景

4、图片是白色背景的青蛙全图png

代码展示:

'''
前期工作:
1、打开PS,导入一张图片,设置参数(右侧的路径开好,形状的设置做好)
2、英文状态模版、反选、修改、拓展、右侧路径、左侧钢笔,顶部形状,点的粗细,线条虚线还是点
然后再批量修改图片(模拟点击鼠标位置)
deepseek 阿夏
2025年0404
'''import os,time
import pyautogui
import pyperclip
import re
# time.sleep(2)
import win32api
import win32contime.sleep(5)# 读取文件名称和路径
path=r'C:\Users\jg2yXRZ\OneDrive\桌面\20250401边缘线剪纸'
folder_path = path +r'\02_01青蛙白色原图'
new_path=path +r'\02_02青蛙白色点图'
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)# 模拟按下 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')   # 释放按键# 选取图片左上角的白色    pyautogui.moveTo(506, 219)pyautogui.click()time.sleep(0.5)# 反选  按下 Shift+Ctrl+Ipyautogui.hotkey('shift', 'ctrl', 'I')time.sleep(1)# 边缘扩展# 按下 选择 pyautogui.hotkey('alt', 's')time.sleep(0.5)# 按下 修改pyautogui.press('M')  # 按下并立即释放time.sleep(0.5)# 按下 拓展(pyautogui.press('E')  # 按下并立即释放time.sleep(0.5)# 已经前期设置好白色的宽度)# 确认pyautogui.press('enter')# 图片显示需要时间time.sleep(2)# 主页面上,右侧已经点好了路径# 选取图片左上角的白色    pyautogui.moveTo(1800, 1037)pyautogui.click()time.sleep(2)# 选取左边的钢笔    MMpyautogui.moveTo(17, 468)pyautogui.click()time.sleep(2)# 顶部是形状,改成路径# 点一下形状,出现三个,选第二个路径pyautogui.moveTo(84, 43)pyautogui.click()time.sleep(0.5)# 选第二个路径pyautogui.moveTo(85,81)pyautogui.click()time.sleep(0.5)# 点后面出现的形状按钮(变成灰色填充,边线是虚线)pyautogui.moveTo(355,43)pyautogui.click()time.sleep(0.5)# 点左边的路径,出现三个,选第二个路径pyautogui.moveTo(84, 43)pyautogui.click()time.sleep(0.5)# 选第一个形状pyautogui.moveTo(92,65)pyautogui.click()time.sleep(0.5)# 选白色,改成透明pyautogui.moveTo(198, 44)pyautogui.click()time.sleep(0.5)#,改成透明(无颜色)pyautogui.moveTo (111, 84)pyautogui.click()time.sleep(0.5)# 按回车,出现保存按钮pyautogui.press('enter')# 图片显示需要时间time.sleep(2)# 另存为# 方法1:使用 hotkey 函数(推荐)pyautogui.hotkey('shift', 'ctrl', 's')# 方法2:分步操作(更精确控制)pyautogui.keyDow

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

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

相关文章

Python-函数参数

1. 参数基础 函数参数是向函数传递数据的主要方式,Python 提供了多种参数传递机制。 基本用法 def greet(name): # name 是形式参数print(f"Hello, {name}!")greet("Alice") # "Alice" 是实际参数使用场景:当函数需要…

《在 Ubuntu 22.04 上安装 CUDA 11.8 和 Anaconda,并配置环境变量》

安装 CUDA 11.8 和 Anaconda 并配置环境变量 在本教程中,我们将介绍如何在 Ubuntu 22.04 上安装 CUDA 11.8 和 Anaconda,并配置相应的环境变量。我们还将配置使用 阿里云镜像源 来加速软件包更新。以下是具体步骤。 步骤 1:更新软件源 首先…

Ubuntu环境基于Ollama部署DeepSeek+Open-Webui实现本地部署大模型-无脑部署

Ollama介绍 Ollama是一款简单好用的模型部署工具,不仅可以部署DeepSeek,市面上开源模型大部分都可以一键部署,这里以DeepSeek为例 官网 DeepSeek 版本硬件要求 安装Ollama 环境 sudo apt update sudo apt install curl sudo apt install lsof1.命令一键安装 在官网点击…

Angular 项目 PDF 批注插件库在线版 API 示例教程

本文章介绍 Angular 项目中 PDF 批注插件库 ElasticPDF 在线版 API 示例教程,API 包含 ① 导出批注后PDF数据;② 导出纯批注 json 数据;③ 加载旧批注;④ 切换文档;⑤ 切换用户;⑥ 清空批注 等数据处理功能…

Spring Boot 中利用 Jasypt 实现数据库字段的透明加密解密

1. 引言 1.1 什么是 Jasypt Jasypt(Java Simplified Encryption)是一个用于简化 Java 应用程序中加密操作的库。 1.2 为什么使用 Jasypt 简化加密操作:提供简单的 API 进行加密和解密。透明加密:自动处理加密和解密过程,无需手动干预。多种加密算法:支持多种加密算法,…

Linux的: /proc/sys/net/ipv6/conf/ 笔记250405

Linux的: /proc/sys/net/ipv6/conf/ /proc/sys/net/ipv6/conf/ 是 Linux 系统中用于 动态配置 IPv6 网络接口参数 的核心目录。它允许针对不同网络接口(如 eth0、wlan0)或全局设置(all)调整 IPv6 协议栈的行为。 它通过虚拟文件系…

Spring Cloud 框架为什么能处理高并发

Spring Cloud框架能够有效处理高并发场景,核心在于其微服务架构设计及多组件的协同作用,具体机制如下: 一、分布式架构设计支撑高扩展性 服务拆分与集群部署 Spring Cloud通过微服务拆分将单体系统解耦为独立子服务,每个服务可独…

无人机智慧路灯杆:智慧城市的‘全能助手’

在城市发展的进程中,智慧路灯杆作为智慧城市建设的关键载体,正逐步从传统的照明设备转型为集多种功能于一体的智能基础设施。无人机与智慧路灯杆的创新性融合,为城市管理和服务带来了全新的变革与机遇。 一、无人机智慧路灯杆的功能概述 照…

Libevent UDP开发指南

UDP 与 TCP 的核心区别 无连接:不需要建立/维护连接 不可靠:不保证数据包顺序和到达 高效:头部开销小,没有连接管理负担 支持广播/多播:可以向多个目标同时发送数据 一、基础UDP服务器实现 1. 创建 UDP 套接字 #include <event2/event.h> #include <event2/lis…

基于阿里云可观测产品构建企业级告警体系的通用路径与最佳实践

前言 1.1 日常生活中的告警 任何连续稳定运行的生产系统都离不开有效的监控与报警机制。通过监控&#xff0c;我们可以实时掌握系统和业务的运行状态&#xff1b;而报警则帮助我们及时发现并响应监控指标及业务中的异常情况。 在日常生活中&#xff0c;我们也经常遇到各种各样…

智能多媒体处理流水线——基于虎跃办公API的自动化解决方案

在内容爆炸的时代&#xff0c;多媒体文件处理&#xff08;图片压缩、视频转码、音频降噪&#xff09;已成为内容生产者的日常挑战。本文将演示如何基于虎跃办公的多媒体处理API&#xff0c;构建自动化处理流水线&#xff0c;实现&#xff1a; 批量文件智能分类格式自动转换质量…

01-STM32(介绍、工具准备、新建工程)p1-4

文章目录 工具准备和介绍硬件设备stm32简介和arm简介stm32简介STM32命名规则STM32选型STM32F103C8T6最小系统板引脚定义STM32启动配置STM32最小系统电路ARM简介 软件安装注册器件支持包安装ST-LINK驱动安装USB转串口驱动 新建工程创建stm32工程STM32工程编译和下载型号分类及缩…

【ABAP】REST/HTTP技术(一)

1、概念 1.1、SAP 如何提供 Http Service 如果要将 SAP 应用程序服务器 &#xff08;application server&#xff09;作为 http 服务提供者&#xff0c;需要定义一个类&#xff0c;这个类必须实现 IF_HTTP_EXTENSION 接口。IF_HTTP_EXTENSION 接口只有一个方法 HANDLE_REQUEST。…

[实战] linux驱动框架与驱动开发实战

linux驱动框架与驱动开发实战 Linux驱动框架与驱动开发实战一、Linux驱动框架概述1.1 Linux驱动的分类1.2 Linux驱动的基本框架 二、Linux驱动关键API详解2.1 模块相关API2.2 字符设备驱动API2.3 内存管理API2.4 中断处理API2.5 PCI设备驱动API 三、Xilinx XDMA驱动开发详解3.1…

1. hadoop 集群的常用命令

1.上传文件 1)hadoop fs -put words.txt /path/to/input/ 2)hdfs dfs -put words.txt /path/wc/input/ 2.获取hdfs中的文件 hadoop fs -get /path/wc/input/words.txt 3.合并下载多个文件 hadoop fs -getmerge /path/wc/input/words.txt /path/wc/input/words2.txt 4.查…

Keepalived+LVS+nginx高可用架构

注明&#xff1a;所有软件已经下载好&#xff0c;防火墙和SELinux已经全部关闭 一.搭建NFS 1.服务端 1.创建文件 [rootnfs ~]# mkdir -p /nfs/data 2、修改权限 [rootnfs ~]# chmod orw /nfs/data 3、写配置文件 [rootnfs ~]# cat /etc/exports /nfs/data 192.168.111.118(r…

深度学习处理文本(13)

我们使用基于GRU的编码器和解码器来在Keras中实现这一方法。选择GRU而不是LSTM&#xff0c;会让事情变得简单一些&#xff0c;因为GRU只有一个状态向量&#xff0c;而LSTM有多个状态向量。首先是编码器&#xff0c;如代码清单11-28所示。 代码清单11-28 基于GRU的编码器 fro…

HashMap 底层原理详解

1. 核心数据结构 JDK 1.7 及之前&#xff1a;数组 链表 JDK 1.8 及之后&#xff1a;数组 链表/红黑树&#xff08;链表长度 ≥8 时转红黑树&#xff0c;≤6 时退化为链表&#xff09; // JDK 1.8 的 Node 定义&#xff08;链表节点&#xff09; static class Node<K,V&g…

使用MySQL时出现 Ignoring query to other database 错误

Ignoring query to other database 错误 当在远程连接软件中输入MySQL命令出现该错误 导致错误原因是&#xff1a;登录mysql时账户名没有加上u 如果出现该错误&#xff0c;退出mysql&#xff0c;重新输入正确格式进入即可&#xff01;

哈尔滨工业大学:大模型时代的具身智能

大家好&#xff0c;我是樱木。 机器人在工业领域&#xff0c;已经逐渐成熟。具身容易&#xff0c;智能难。 机器人-》智能机器人&#xff0c;需要自主能力&#xff0c;加上通用能力。 智能机器人-》人类&#xff0c;这个阶段就太有想象空间了。而最受关注的-类人机器人。 如何…