使用python-pillow替换图片中的单一颜色
场景
我需要把下面一张图片中的深黄色(255,255,0)替换成(255,204,0)。使用到pillow库。
code
from PIL import Image
img = Image.open("logo.png")
for i in range(2048):
for j in range(2048):
try:
r,g,b,alpha = img.getpixel((i,j))
if r==255 and g==255 and b==0:
g=204
img.putpixel((i,j), (r,g,b,alpha))
except Exception as e:
continue
img.show()
问题
搜索到的结果里不包含alpha
,运行有问题,print出来发现有四个值,看到自己一起写的代码里第四个叫alpha
,是通道
,这里用不到。
刚开始运行后底色一直由白色到粉红色…费解,遂看了白色的RGB值(255,255,255)因此需要多加个判断:and b==0
即可。
一定要加上try语句,因为不是所有的img.getpixel((i,j))
都返回4个值,比如我的例子中白色只有3个值。
重要信息 实际上我有两张基本一样的图片(下图):一张的黄色是(255,255,0),另一张的黄色是(255,204,0)+(255,255,0)这个我手动画了一部分颜色上去。实际运行程序的时候只有第二个成功替换掉了颜色,第一张尝试几次都不行,原因未知。
效果
效果如下,原图(左)新图(右)。图片贴纸来自picsart app
。本文部分参考Python图像处理库:Pillow 初级教程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现