【教学类-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…

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

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

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

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

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…

docker Harbor私有仓库部署管理

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

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

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

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…

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

本篇博客是我对“水果成篮”这道题由暴力解法到滑动窗口思路的具体思路,有需要借鉴即可。 目录 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 结合的项目中实现右侧登录昵称展示,通常涉及到前端的用户界面…

Linux进程——Linux环境变量

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

新能源汽车动力电池热管理方案直冷方案原理简介

前言 随着新能源汽车的快速发展,动力电池作为其核心部件之一,对于其性能和寿命具有重要影响。动力电池在工作过程中会产生大量的热量,如果不能有效地进行热管理,将会导致电池温度升高、性能下降甚至损坏。因此,热管理…

力扣138. 随机链表的复制

Problem: 138. 随机链表的复制 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.创建Map集合Map<Node, Node> map;创建指针cur指向head&#xff1b; 2.遍历链表将cur作为键&#xff0c;new Node(cur.val)作为值&#xff0c;存入map集合&#xff1b; 3.再次…

C语言例题30:将一个正整数分解质因数

#include <stdio.h>void main() {int i;int x;printf("请输入一个正整数&#xff1a;");scanf("%d", &x);printf("%d ", x);//方法一&#xff1a;for (i 2; i < x; i) { //除数&#xff0c;从质数2开始while (x % i 0) { //能…

小程序如何注销

随着移动互联网的深入发展&#xff0c;管控也越来越严格。现在小程序都要求进行ICP备案&#xff0c;不管是新注册的还是以往注册的。很多商家的小程序本身处于无运营状态&#xff0c;现在要求备案&#xff0c;还不如直接注销。下面&#xff0c;将详细介绍小程序注销的步骤和注意…

挖掘线下潜力:Xinstall为App推广开辟新渠道

在移动互联网时代&#xff0c;App的推广成为了企业营销的重要环节。然而&#xff0c;线上推广渠道日益拥堵&#xff0c;成本不断攀升&#xff0c;让许多开发者开始寻找线下推广的新机会。此时&#xff0c;Xinstall作为国内专业的App全渠道统计服务商&#xff0c;为开发者提供了…

中国4月进口以美元计同比增长8.4%,出口同比增长1.5%

中国按美元计4月进出口同比增速均转负为正&#xff0c;双双超预期。 5月9日周四&#xff0c;海关总署公布数据显示&#xff0c;以美元计价&#xff0c;中国2024年4月进口同比增长8.4%至2201亿美元&#xff0c;前值同比下降1.9%&#xff0c;出口同比增长1.5%至2924.5亿美元&…

javaWeb快速部署到tomcat阿里云服务器

目录 准备 关闭防火墙 配置阿里云安全组 点击控制台 点击导航栏按钮 点击云服务器ECS 点击安全组 点击管理规则 点击手动添加 设置完成 配置web服务 使用yum安装heepd服务 启动httpd服务 查看信息 部署java通过Maven打包好的war包项目 Maven打包项目 上传项目 …

西汉两个韩信,结局怎么如此相似

西汉军事家、“汉初三杰”韩信是家喻户晓的人物&#xff0c;同时期还有一个韩信&#xff0c;也是战功赫赫&#xff0c;也被封王&#xff0c;史书为了区别&#xff0c;在后一个韩信名字之间加上一个“王”&#xff0c;称为韩王信。韩信是个光芒万丈的人物&#xff0c;韩王信也是…

WPF容器控件之WrapPanel、布局控件

WrapPanel: 换行panel 子元素进行换行&#xff0c;当子元素的宽度或者高度超出了父元素&#xff0c;才进行换行。高度超出父元素的高度 也会另起一列 属性 Orientation布局方式 实例 <WrapPanel Orientation"Horizontal"><Label>C# 是从 C/C 衍生出来的…