【教学类-36-10】20250531蝴蝶图案描边,最适合大小(一页1图1图、2图图案不同、2图图案相同对称)

article/2025/6/25 17:58:03


背景说明:

之前做了动物头像扇子(描边20),并制作成一页一套图案对称两张

【教学类-36-09】20250526动物头像扇子的描边(通义万相)对称图40张,根据图片长宽,自动旋转图片,最大化图片-CSDN博客文章浏览阅读1k次,点赞37次,收藏6次。【教学类-36-09】20250526动物头像扇子的描边(通义万相)对称图40张,根据图片长宽,自动旋转图片,最大化图片 https://blog.csdn.net/reasonsummer/article/details/148241058?sharetype=blogdetail&sharerId=148241058&sharerefer=PC&sharesource=reasonsummer&spm=1011.2480.3001.8118

现在我需要用把“蝴蝶”做成描边、一页一图、一页两图样式

【教学类-36-07】20230707三只对称蝴蝶(midjounery-niji)(涂色、裁剪、游戏(飞舞的蝴蝶))_对称图案涂色-CSDN博客文章浏览阅读586次。【教学类-36-07】20230707三只对称蝴蝶(midjounery-niji)(涂色、裁剪、游戏(飞舞的蝴蝶))_对称图案涂色 https://blog.csdn.net/reasonsummer/article/details/131598617?spm=1011.2415.3001.5331

WORD模版

图片处理

添加点状描边,因为用了5磅的圆点,所以只做了描边20磅

'''
将已经白色P图的图案放大、透明、描边、切边deepseek,阿夏
20250531
'''
from PIL import Image, ImageDraw
import os
import math# 放大和透明室共有
print('------0、基本信息-----')
# 主路径
path = r'D:\test\20桌面素材\蝴蝶\蝴蝶2.0'
# path=r'D:\图片\20240614蛋筒彩蛋# 图片夹名称
a = '01'
b = '蝴蝶'
c = '虚线描边'# # 保存
# all = path + fr'\{a}_10{b}合并图'# 参数设置# 1、内部花纹框
# 花纹边框颜色((内部)
cchw = 0
# 调整蓝色区域边框宽度(像素)
blue_width = 0# 2、轮廓线
# 轮廓线黑线边框颜色(中间150,150,150)
ccn = 0
# 轮廓线的宽度
mb_border_width = 1  # 黑边宽度(像素)
w = int(mb_border_width / 2)  # 内5外5# 5、画布尺寸放大
target_width = 2000  # 统一宽度
target_height = target_width  # 统一高度
background_expand = 1000  # 白色背景放大尺寸# 6、添加中线虚线(折痕)# Parameters for center line# 中线参数
xxx = 0  # 颜色
total_line_width = 10  # 总宽度10磅
left_width = int(total_line_width) / 2  # 左边5磅
right_width = left_width  # 右边
# line_width = 10  # 线条粗细
dash_length = 30  # 黑线段
gap_length = 30  # 白线段# 定义文件夹路径
in_folder = os.path.join(path, f'{a}_01{b}白色')  # 原始图片(白背景)
big_folder = os.path.join(path, f'{a}_02{b}{c}放大背景')  # 放大背景输出
transparent_folder = os.path.join(path, f'{a}_03{b}{c}透明背景')  # 透明背景输出
# output_folder = os.path.join(path, f'{a}_04{b}{c}黑边轮廓')  # 最终输出
dotput_folder = os.path.join(path, f'{a}_05{b}{c}黑边点虚线轮廓')  # 最终输出
# input_folder = output_folder  # 原始图片文件夹# 创建输出文件夹
# os.makedirs(all, exist_ok=True)
# os.makedirs(output_folder,exist_ok=True)
os.makedirs(dotput_folder, exist_ok=True)
os.makedirs(big_folder, exist_ok=True)
os.makedirs(transparent_folder, exist_ok=True)rrh, ggh, bbh = cchw, cchw, cchwprint('------1、白色PNG背景放大一点-----')
# 遍历输入文件夹中的所有PNG文件
for filename in os.listdir(in_folder):if filename.lower().endswith('.png'):# 打开原始图片input_path = os.path.join(in_folder, filename)with Image.open(input_path) as img:original_width, original_height = img.size# 创建新画布(长宽各+200,白色背景)new_width = original_width + background_expandnew_height = original_height + background_expandnew_image = Image.new('RGB', (new_width, new_height), (255, 255, 255))# 计算粘贴位置(居中)paste_x = (new_width - original_width) // 2paste_y = (new_height - original_height) // 2# 将原始图片粘贴到新画布上new_image.paste(img, (paste_x, paste_y), img if img.mode == 'RGBA' else None)# 保存结果big_path = os.path.join(big_folder, filename)new_image.save(big_path)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))else:new_data.append(item)img.putdata(new_data)return imgprint("正在转换白背景为透明背景...")
for file_name in os.listdir(big_folder):if file_name.lower().endswith((".png", ".jpg", ".jpeg")):input_file_path = os.path.join(big_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}")# 描边为20、50、80
for x in [20]:cropped_folder = os.path.join(path, f'{a}_06{b}{c}切边{x}')  # 裁剪后的透明图片os.makedirs(cropped_folder, exist_ok=True)# 3、点状虚线裁剪边# 点状虚线边框颜色(外边)ccw = 150# 白色描边宽度(像素)轮廓线外层white_border_width = x# 黑点直径(像素)dot_size = 5# # 黑点间距(像素)增加间距确保均匀分布  dot_spacing = dot_size * 2# 4、裁剪时不保留额外透明边距transparent_edge = 0  # 裁剪时不保留额外透明边距# 灰线深浅测试# for cr3 in range(cchw,cchw+10,10):# 黑色边框颜色# 灰色# if x==1:#   中线(内)    rrw = ggw = bbw = ccwrrn = ggn = bbn = ccnrrh = ggh = bbh = cchwrrx = ggx = bbx = xxxprint('------3、添加点状虚线轮廓-----')def get_edge_pixels(image):"""获取图像中不透明像素与透明像素交界的边缘像素坐标"""edge_pixels = []pixels = image.load()width, height = image.sizefor y in range(height):for x in range(width):if pixels[x, y][3] > 0:  # 不透明像素# 检查4邻域for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]:nx, ny = x + dx, y + dyif 0 <= nx < width and 0 <= ny < height:if pixels[nx, ny][3] == 0:  # 邻域透明edge_pixels.append((x, y))breakreturn edge_pixelsdef expand_edge_pixels(edge_pixels, distance, width, height):"""扩展边缘像素坐标到指定距离"""expanded_pixels = set()for x, y in edge_pixels:for dy in range(-distance, distance + 1):for dx in range(-distance, distance + 1):nx, ny = x + dx, y + dyif 0 <= nx < width and 0 <= ny < height:expanded_pixels.add((nx, ny))return expanded_pixelsdef get_contour_pixels(border_pixels, width, height):"""获取白边区域的外轮廓像素(使用边缘追踪算法)"""# 找到起始点(最左上角的边界像素)start_point = Nonefor y in range(height):for x in range(width):if (x, y) in border_pixels:start_point = (x, y)breakif start_point:breakif not start_point:return []# 使用Moore-Neighbor追踪算法获取轮廓contour = []current = start_pointprevious = (current[0] - 1, current[1])  # 假设从左侧开始directions = [(0, -1), (1, -1), (1, 0), (1, 1),(0, 1), (-1, 1), (-1, 0), (-1, -1)]while True:contour.append(current)# 找到下一个

http://www.hkcw.cn/article/uMNhdsBjbY.shtml

相关文章

灌水论坛系统总体设计文档

一、实验题目 灌水论坛系统 二、实验目的 旨在通过一个相对完整且功能丰富的Web应用实例&#xff0c;全面地实践和巩固Web开发所需的各项核心技术和工程方法&#xff0c;从而提升其综合应用能力和解决实际开发问题的能力。它不仅仅是完成一个软件&#xff0c;更是一个学习、…

TK海外抢单源码/指定卡单

​ 抢单源码&#xff0c;有指定派单&#xff0c;打针&#xff0c;这套二改过充值跳转客服 前端vue 后端php 两端分离 可二开 可以指定卡第几单&#xff0c;金额多少&#xff0c; 前后端开源 PHP7.2 MySQL5.6 前端要www.域名&#xff0c;后端要admin.域名 前端直接静态 伪静…

印军高官为何指责83架光辉订单0交付 国产战机交付延迟

印度空军参谋长辛格在印度工业联合会举办的年度商业峰会上严厉批评本国的航空制造业,指出印度大型国防项目的落实没有如期进行,包括国产“光辉”战机在内的战斗机向空军交付均出现延迟。根据2021年与印度斯坦航空有限公司签订的价值4800亿卢比(约合404亿元人民币)的合同,印…

年轻人开始主动挂艾草了 老习俗焕发新活力

今年端午节当天,“年轻人开始主动挂艾草了”登上小红书APP热点榜首,截至晚上9点30分浏览量达到918万次。菜市场几块钱一把的野生艾草,在年轻人手中经过巧手改造,搭配菖蒲叶、玉簪叶、香樟果和铃铛,变成了身价百元的“祈福门挂”。如今,挂艾草不再只是简单的节庆习俗,而是…

Roguelike地牢:混沌系统与涌现式玩法设计

目录 Roguelike地牢:混沌系统与涌现式玩法设计引言第一章 地牢生成算法1.1 多级生成策略1.2 柏林噪声应用第二章 道具生态系统2.1 属性耦合模型2.2 道具稀有度系统第三章 敌人行为树3.1 自适应难度3.2 状态机设计第四章 永久死亡机制4.1 元进度系统4.2 遗产继承设计第五章 光照…

【数据集】基于累计分布函数匹配CDF Matching与多分辨率卡尔曼滤波MKF相结合的地表温度(2002-2020)

目录 数据概述一、输入数据二、生产流程与处理方法步骤一:生成被动微波LST数据(PMW LST)步骤二:CDF匹配提高高分辨率LST质量步骤三:多分辨率卡尔曼滤波(MKF)融合生成全时空覆盖LST三、模拟效果与实验结果四、生成空间完整全天候LST五、验证与精度评估数据下载下载方式1:…

探索Python中的Dask:高效处理大规模数据的利器

在当今数据驱动的时代&#xff0c;处理大规模数据集已成为许多领域的重要挑战。Python作为数据科学和机器学习领域的主流编程语言&#xff0c;虽然拥有NumPy和Pandas等强大的库&#xff0c;但在面对超出内存限制的大数据集时&#xff0c;这些工具往往显得力不从心。Dask作为一款…

DeepSeek 部署中的常见问题及解决方案

部署环境配置问题 硬件资源不足或兼容性问题可能导致部署失败。在部署前需要对计算资源进行全面评估&#xff1a; 硬件要求检查 CPU&#xff1a;至少4核处理器&#xff08;推荐8核以上&#xff09;&#xff0c;如Intel Xeon或AMD EPYC系列GPU&#xff08;如需&#xff09;&…

SpringBoot简单体验

1 Helloworld 打开&#xff1a;https://start.spring.io/ 选择maven配置。增加SpringWeb的依赖。 Generate之后解压&#xff0c;代码大致如下&#xff1a; hpDESKTOP-430500P:~/springboot2/demo$ tree ├── HELP.md ├── mvnw ├── mvnw.cmd ├── pom.xml └── s…

[yolov11改进系列]基于yolov11引入大型分离卷积注意力模块LSKA减少计算复杂性和内存的python源码+训练源码

【LSKA介绍】 本文给大家带来一种超大核注意力机制的改进方法&#xff0c;尝试了多种改进方法。不仅速度快&#xff0c;而且还有不同程度的提升了精度&#xff01; 论文&#xff1a;《LSKA&#xff08;大可分离核注意力&#xff09;&#xff1a;重新思考CNN大核注意力设计》 h…

AI编程在BOSS项目的实践经验分享

前言 在人工智能技术革新浪潮的推动下&#xff0c;智能编程助手正以前所未有的速度重塑开发领域。这些基于AI的代码辅助工具通过智能提示生成、实时错误检测和自动化重构等功能&#xff0c;显著提升了软件工程的全流程效率。无论是初入行业的开发者还是资深程序员&#xff0c;…

菜鸟之路Day36一一Web开发综合案例(部门管理)

菜鸟之路Day36一一Web开发综合案例&#xff08;部门管理&#xff09; 作者&#xff1a;blue 时间&#xff1a;2025.5.28 文章目录 菜鸟之路Day36一一Web开发综合案例&#xff08;部门管理&#xff09;一.环境搭建二.开发规范三.部门管理3.1查询3.2删除3.3新增3.3修改根据id来…

一周学会Pandas2之Python数据处理与分析-Pandas2数据合并与对比-df.compare():差异高亮

锋哥原创的Pandas2 Python数据处理与分析 视频教程&#xff1a; 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili df.compare()&#xff1a;差异高亮 df.compare() 是 pandas 中用于 高效比较两个 DataFrame 差异 的方法&#xff0…

uniapp安卓App自定义相机(身份证相机)

效果图&#xff1a; 实现思路&#xff1a; 本人也是第一次做app的自定义相机功能&#xff0c;找了相关文章后&#xff0c;发现uniapp自带的相机组件是不能实现在app中自定义相机的功能&#xff0c;因为不支持。按照前辈们的思路&#xff0c;是使用uniapp中的live-pusher直播组…

【软件安装】非华为手机安装华为电脑管家(14.0.5.8 C233)(附带安装包下载地址)

前言 华为电脑管家是一款专为华为电脑用户设计的综合管理软件&#xff0c;提供了多种实用功能&#xff0c;旨在优化电脑性能并提升用户体验。其拥有以下特色功能&#xff1a; 互传功能&#xff1a; 快速传输&#xff1a;华为电脑管家支持与华为手机之间的快速文件传输。用户可…

明基RD280U编程显示器深度测评:码农的「第二块键盘」竟然会发光?

文章目录 前言一、开箱篇&#xff1a;当理工男遇到「俄罗斯套娃式包装」二、外观篇&#xff1a;深空灰的「代码容器」1. 桌面变形记2. 保护肩颈的人体工学设计 三、显示篇&#xff1a;给代码做「光子嫩肤」1. 28寸超大大屏 3:2屏比 4K超清2.专业编程模式&#xff0c;让代码一…

一次电脑感染Synaptics Pointing Device Driver病毒的经历,分享下经验

没想到作为使用电脑多年的老司机也会电脑中病毒&#xff0c;周末玩电脑的时候突然电脑很卡&#xff0c;然后自动重启&#xff0c;奇怪&#xff0c;之前没出现这个情况。 重启后电脑开机等了几十秒&#xff0c;打开任务管理器查看开机进程&#xff0c;果然发现有个Synaptics Po…

给出一个基于 ESP32(Espressif ESP-IDF)来连接并向蓝牙耳机发送音频的方案示例。该方案的核心思路是让 ESP32 充当「A2DP Source」(与手机类似)

下面给出一个基于 ESP32&#xff08;Espressif ESP-IDF&#xff09;来连接并向蓝牙耳机发送音频的方案示例。该方案的核心思路是让 ESP32 充当「A2DP Source」&#xff08;与手机类似&#xff09;&#xff0c;而蓝牙耳机则是「A2DP Sink」。这样&#xff0c;ESP32 能够像手机一…

2025真正可行的手机安装Kali Linux方法!

很久前&#xff0c;我出了一期termux安装kali linux视频&#xff0c;有很多问题&#xff0c;这次加以记录和整理&#xff0c;总体来说&#xff0c;大多是国际网络问题和linux命令错误&#xff0c;就算实现了国际网络&#xff0c;但你的安装程序不一定通过国际网络进行&#xff…

程序员编程利器一明基RD280U显示器

目录 ​编辑 一、引言 二、开箱验货 三、丝滑极致深度体验 独特屏比&#xff0c;让代码阅读如鱼得水 超大巨幕&#xff0c;释放监控细节 专业编程模式&#xff0c;打造舒适视觉环境 强大护眼功能&#xff0c;呵护眼睛健康 丰富扩展功能&#xff0c;提升工作便捷性 智…