【教学类-53-01】20240509“去掉背景的png彩色图片”转“黑色影子图”

作品展示

背景需求:

刚写完蒙德里安涂色学具,准备开课,转眼班级就“百日咳“”隔离3周,o(╥﹏╥)o

我的AI对话大师只剩1个月的有效期,剩下9万6千次也马上就作废了。

最后一个月可以尽量多用掉一些,我从小红书下载“幼儿益智区小班”的学具,看看那些学具可以用AI对话大师写Python代码。

首先我看到“小红书里的益智区的学具”的一个重要元素——“黑色影子”

也就是将彩色图片变成黑色填充图片。

素材准备:

这些图片的背景都要用PS扣掉的,另存为png

代码展示:

'''
带有alpha的png图片转影子(影子小一半)
作者:AI对话大师,阿夏
时间:2024年5月9日
'''from PIL import Image
import ospath = r'C:\Users\jg2yXRZ\OneDrive\桌面\图片转影子'
# 原始文件夹路径和目标文件夹路径
original_folder = path + r"\pic"
target_folder = path + r"\out"# 确保目标文件夹存在
if not os.path.exists(target_folder):os.makedirs(target_folder)# 获取原始文件夹中所有图片的文件名列表
image_files = [filename for filename in os.listdir(original_folder) if filename.endswith(".png")]# 遍历每个图片文件
for image_file in image_files:# 构建原始图片的完整路径original_image_path = os.path.join(original_folder, image_file)# 打开原始图片image = Image.open(original_image_path)# 创建一个新的图像,与原始图像的大小和模式相同new_image = Image.new("RGBA", image.size)# 获取原始图像的像素数据pixels = image.load()# 遍历图像的每个像素for i in range(image.size[0]):for j in range(image.size[1]):# 获取当前像素的RGBA值try:r, g, b, a = pixels[i, j]except ValueError:r, g, b = pixels[i, j]a = 255# 判断当前像素的Alpha值if a == 0:# 如果Alpha值为0,则保留该像素new_image.putpixel((i, j), (r, g, b, a))else:# 如果Alpha值不为0,则将该像素设置为黑色,不透明度为255new_image.putpixel((i, j), (0, 0, 0, 255))# 构建目标图片的完整路径target_image_path = os.path.join(target_folder, image_file)# 保存新的图像new_image.save(target_image_path)

运行结果

代码新建了一个输出文件夹

发现彩色图片是213KB,但是黑白图片只有4,15KB,对比发现小了一圈。

代码:把影子图片变大

'''
带有alpha的png图片转影子(影子一样大)
作者:AI对话大师,阿夏
时间:2024年5月9日
'''from PIL import Image
import ospath = r'C:\Users\jg2yXRZ\OneDrive\桌面\图片转影子'
# 原始文件夹路径和目标文件夹路径
original_folder = path + r"\pic"
target_folder = path + r"\out"# 确保目标文件夹存在
if not os.path.exists(target_folder):os.makedirs(target_folder)# 获取原始文件夹中所有图片的文件名列表
image_files = [filename for filename in os.listdir(original_folder) if filename.endswith(".png")]# 遍历每个图片文件
for image_file in image_files:# 构建原始图片的完整路径original_image_path = os.path.join(original_folder, image_file)# 打开原始图片image = Image.open(original_image_path)# 调整图片大小(增加像素)new_size = (image.size[0] * 2, image.size[1] * 2)  # 原始图片大小乘以2resized_image = image.resize(new_size)# 创建一个新的图像,大小是调整后的图片大小new_image = Image.new("RGBA", new_size)# 获取调整后的图片的像素数据pixels = resized_image.load()# 遍历图像的每个像素for i in range(resized_image.size[0]):for j in range(resized_image.size[1]):# 获取当前像素的RGBA值try:r, g, b, a = pixels[i, j]except ValueError:r, g, b = pixels[i, j]a = 255# 判断当前像素的Alpha值if a == 0:# 如果Alpha值为0,则保留该像素new_image.putpixel((i, j), (r, g, b, a))else:# 如果Alpha值不为0,则将该像素设置为黑色,不透明度为255new_image.putpixel((i, j), (0, 0, 0, 255))# 构建目标图片的完整路径target_image_path = os.path.join(target_folder, image_file)# 保存新的图像new_image.save(target_image_path)

原来狮子影子图示4.15,现在是8.19(大了一倍)

黑色影子笔彩色兔子的长宽还大一点,但是KB还是没有达到234KB,不过看上去已经可以了

此外png透明边缘转成黑色后,还是能看到边缘锯齿的,不是很光滑

对比——影子放大两倍

存在问题:

需要人工给jpg图片扣除白色背景,比较费时

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

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

相关文章

SpringBoot 扩展篇:ConfigFileApplicationListener源码解析

SpringBoot 扩展篇:ConfigFileApplicationListener源码解析 1.概述2. ConfigFileApplicationListener定义3. ConfigFileApplicationListener回调链路3.1 SpringApplication#run3.2 SpringApplication#prepareEnvironment3.3 配置environment 4. 环境准备事件 Config…

leetcode 2320.统计放置房子的方式数

思路:dp 其实我们不难发现,如果我们按照单侧来说,并且让我们求最大价值的话,这就是一个打家劫舍的动态规划问题。 但是这里我们需要求方案数。所以这里我们的dp含义就变成了:在前i块地皮中放置房子的方案数。 首先就…

第十篇:数字堡垒:操作系统安全深度解析与实战指南

数字堡垒:操作系统安全深度解析与实战指南 1 *引言 1.1 数字世界的守护者 在遥远的比特海中,有一座名为“操作系统”的数字堡垒,它守护着我们的数据宝藏,确保每一次计算的航行都能安全抵达彼岸。然而,这片海域并非风…

2024年最新【SpringBoot2】开发实用篇-测试_springboot2 test(1),2024年最新2024春招BAT面试真题详解

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化! 由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、…

推荐一个好用的数据集处理脚本

前段时间在整理数据集,但是需要先处理一下数据集,批量的修改图片的名字,因此找了一下的代码,这非常好用,分享给大家。 注意事项:转换后,这脚本会把你之前文件夹的内容全删掉。 import osclass …

2024最新大厂C++面试真题合集,大厂面试百日冲刺 bay8

腾讯视频 C多态性如何体现?模版怎么实现的多态? C中的多态性主要通过两种方式体现:虚函数(动态多态性)和模板(静态多态性)。 虚函数实现的多态性:通过基类指针或者引用&#xff0…

YOLOv5,YOLOv7改进之结合​SOCA

1.SOCA moudle结构图 2,YOLOv5,YOLOv7改进之结合​SOCA 1.配置common.py文件 #SOCA moudle 单幅图像超分辨率 class Covpool(Function):@staticmethoddef forward(ctx, input):x = inputbatchSize = x.data.shape[0]dim = x.data.shape[1]h = x.data.shape[2]w = x.data.sha…

微信小程序开发秘籍:解锁地理位置服务与周边信息探索

微信小程序开发秘籍:解锁地理位置服务与周边信息探索 一、地理信息服务基础1.1 什么是地理信息服务?1.2 微信小程序中的GIS API简介 二、获取用户位置:wx.getLocation实战2.1 API介绍2.2 代码示例 三、周边信息获取:利用腾讯位置服…

docker Harbor私有仓库部署管理

搭建本地私有仓库,但是本地私有仓库的管理和使用比较麻烦,这个原生的私有仓库并不好用,所以我们采用harbor私有仓库,也叫私服,更加人性化。 一、什么是Harbor Harbor是VWware 公司开源的企业级Docker Registry项…

android TV app适配遥控器思路,recycleview选中放大

背景: 1、当遥控器遥控盒子,app内是有一套机制,响应遥控器的操作; 2、要实现遥控器选中的效果,必须要设置setOnFocusChangeListener方法,另外一个就是设置view的setOnClickListener方法;设置完之后&#…

安卓开发--按键跳转页面,按键按下变色

前面已经介绍了一个空白按键工程的建立以及响应方式,可以参考这里:安卓开发–新建工程,新建虚拟手机,按键事件响应。 安卓开发是页面跳转是基础!!!所以本篇博客介绍利用按键实现页面跳转&#…

C语言自定义数据类型

一.结构体 1.结构体 I.基本格式 struct tag {member-list; }variable-list; II.结构体声明 struct PERSON // 结构体声明 {int age; // 声明成员类型long ss;float weight;char name[25]; } family_member; // 定义结构体变量fa…

day1_slidingWindow

一、滑动窗口模板 // 注意:java 代码由 chatGPT🤖 根据我的 cpp 代码翻译,旨在帮助不同背景的读者理解算法逻辑。 // 本代码不保证正确性,仅供参考。如有疑惑,可以参照我写的 cpp 代码对比查看。import java.util.Has…

Robots协议的一点知识

Robots协议,通常指的是robots.txt协议,是一种网站管理员用来告诉搜索引擎蜘蛛(也称为爬虫或机器人)哪些页面可以被抓取,哪些不可以的文本文件。这个协议也被称为排除标准(Robots Exclusion Protocol&#x…

linux环境下安装《车辆动态监控系统》支持JT808、JT1078、苏标主动安全设备接入

《车辆动态监控系统》安装包下载地址 开放端口 80/443/8800,web后台端口,nginx代理服务,nginx默认为8800端口8808,JT808专用端口6802,视频播放推流端口6891-6898,FTP端口6821,苏标主动安全附件…

【算法】滑动窗口——水果成篮

本篇博客是我对“水果成篮”这道题由暴力解法到滑动窗口思路的具体思路,有需要借鉴即可。 目录 1.题目2.暴力求解3.暴力优化3.1每次right不用回退3.2有些left长度一定不如前一个,不用走,left不回退 4.滑动窗口算法5.总结 1.题目 题目链接&am…

SpringBoot+vue实现右侧登录昵称展示

目录 1. 定义User数据 1.1.在created方法获取数据 1.2.头部导航栏绑定User数据 1.3.在data中定义User数据 2. 获取数据 2.1.接收父组件传递的值 2.2.展示数据 3. 页面效果 在SpringBoot和 Vue.js 结合的项目中实现右侧登录昵称展示,通常涉及到前端的用户界面…

淘宝/天猫按关键字搜索淘宝商品 API接口

淘宝/天猫按关键字搜索淘宝商品的API接口,确实为开发者提供了便捷的商品搜索功能。至于超好用的工具,我可以为你推荐一些常用的API接口调用工具或者相关服务,这些工具或服务可以帮助你更高效地使用API接口。 首先,对于淘宝/天猫的…

什么是BFF API

BFF(Backend For Frontend)API 是一种架构模式,旨在为特定的前端应用(如移动应用、桌面应用或网页应用)提供定制化的后端服务。通过这种方式,后端可以根据前端的具体需求和特性,提供最优化的数据…

Linux进程——Linux环境变量

前言:在结束完上一篇的命令行参数时,我们简单的了解了一下Linux中的环境变量PATH,而环境变量不只有PATH,关于更多环境变量的知识我们将在本篇展开! 本篇主要内容: 常见的环境变量 获取环境变量的三种方式 本…