You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pillow的putdata方法转换灰度图为彩色时输出全黑

问题原因及修复方案

1. 图像模式与像素格式不匹配(最高发原因)

Pillow的putdata()方法严格要求传入的像素序列格式和Image对象的模式一一对应:

  • 如果你的newPic中每个元素是(R, G, B)三元组,img必须为RGB模式
  • 如果你直接用打开灰度图得到的L(单通道灰度)模式对象传入RGB三元组,参数会被异常解析,最终输出全黑图像

修复代码:

# 调用putdata前先转换图像模式
img = img.convert('RGB')
img.putdata(newPic)
img.save('tester.png')

2. 颜色值范围错误

如果你自定义的colors列表存储的是0~1区间的浮点型RGB数值,Pillow的RGB模式要求每个通道取值为0~255的整数,浮点值会被直接截断为0,导致全黑。

修复代码:

在赋值color时做数值转换:

if minNum == gs[i]:
    color = tuple(int(c * 255) for c in colors[i])

3. 快速验证方法

可输出参数确认匹配状态:

print("图像当前模式:", img.mode)
print("newPic前5个像素样例:", newPic[:5])

内容的提问来源于stack exchange,提问作者Josh Coleman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 02:09:02