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

2024-05-10 02:12

本文主要是介绍【教学类-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图片扣除白色背景,比较费时

这篇关于【教学类-53-01】20240509“去掉背景的png彩色图片”转“黑色影子图”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/975139

相关文章

Python使用PIL库将PNG图片转换为ICO图标的示例代码

《Python使用PIL库将PNG图片转换为ICO图标的示例代码》在软件开发和网站设计中,ICO图标是一种常用的图像格式,特别适用于应用程序图标、网页收藏夹图标等场景,本文将介绍如何使用Python的... 目录引言准备工作代码解析实践操作结果展示结语引言在软件开发和网站设计中,ICO图标是一种常用的图像

css渐变色背景|<gradient示例详解

《css渐变色背景|<gradient示例详解》CSS渐变是一种从一种颜色平滑过渡到另一种颜色的效果,可以作为元素的背景,它包括线性渐变、径向渐变和锥形渐变,本文介绍css渐变色背景|<gradien... 使用渐变色作为背景可以直接将渐China编程变色用作元素的背景,可以看做是一种特殊的背景图片。(是作为背

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

hdu 2602 and poj 3624(01背包)

01背包的模板题。 hdu2602代码: #include<stdio.h>#include<string.h>const int MaxN = 1001;int max(int a, int b){return a > b ? a : b;}int w[MaxN];int v[MaxN];int dp[MaxN];int main(){int T;int N, V;s

集中式版本控制与分布式版本控制——Git 学习笔记01

什么是版本控制 如果你用 Microsoft Word 写过东西,那你八成会有这样的经历: 想删除一段文字,又怕将来这段文字有用,怎么办呢?有一个办法,先把当前文件“另存为”一个文件,然后继续改,改到某个程度,再“另存为”一个文件。就这样改着、存着……最后你的 Word 文档变成了这样: 过了几天,你想找回被删除的文字,但是已经记不清保存在哪个文件了,只能挨个去找。真麻烦,眼睛都花了。看

恶意PNG:隐藏在图片中的“恶魔”

&lt;img src=&quot;https://i-blog.csdnimg.cn/blog_migrate/bffb187dc3546c6c5c6b8aa18b34b962.jpeg&quot; title=&quot;214201hhuuhubsuyuukbfy_meitu_1_meitu_2.jpg&quot;/&gt;&lt;/strong&gt;&lt;/span&gt;&lt;

01 Docker概念和部署

目录 1.1 Docker 概述 1.1.1 Docker 的优势 1.1.2 镜像 1.1.3 容器 1.1.4 仓库 1.2 安装 Docker 1.2.1 配置和安装依赖环境 1.3镜像操作 1.3.1 搜索镜像 1.3.2 获取镜像 1.3.3 查看镜像 1.3.4 给镜像重命名 1.3.5 存储,载入镜像和删除镜像 1.4 Doecker容器操作 1.4

第49课 Scratch入门篇:骇客任务背景特效

骇客任务背景特效 故事背景:   骇客帝国特色背景在黑色中慢慢滚动着! 程序原理:  1 、 角色的设计技巧  2 、克隆体的应用及特效的使用 开始编程   1、使用 黑色的背景: ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7d74c872f06b4d9fbc88aecee634b074.png#pic_center)   2

数据中台出现的背景

数据中台产生背景 数据建设中出现的问题 在企业数据建设过程中,都离不开大数据平台建设,大数据平台建设涉及数据采集、数据存储、数据仓库构建、数据处理分析、数据挖掘、数据可视化等一系列流程。 随着企业体量不断增大,一个企业可能有总公司及很多子公司,随着企业各类业务多元化和垂直业务发展,从全企业角度来看,每个子公司或者某些独立的业务部都在构建大数据分析平台,在企业内部形成了很多分散、烟囱式、独立的

PNG透明背景按钮的实现(MFC)

问题描述: 当前要在对话框上添加一个以两个PNG图片作为背景的按钮,PNG图的背景是透明的,按钮也要做出相同的透明效果。并且鼠标不在按钮上时,按钮显示"bg1.png";鼠标移动到按钮上时,按钮显示"bg2.png" 开发环境为VS2010。 解决办法: 使用GDI+库装载PNG图片,并使用MFC Button Control和CMFCButton类结合,调用CMFCButton