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

如何在PIL中正确保存并加载灰度WebP图像?

解决PIL保存WebP灰度图像后加载为RGB的问题

问题核心是PIL对WebP格式的灰度图像处理逻辑和PNG不同:PNG原生支持单通道灰度存储,而WebP在PIL的默认处理中,会将灰度图像转为RGB格式保存或加载。以下是两种可行的解决方法:

方法1:创建图像时显式指定灰度模式

在通过Image.fromarray创建图像对象时,明确指定mode='L'(灰度模式),强制图像以单通道格式保存:

import numpy as np
from PIL import Image, ImageOps

o = np.random.rand(100,100)*255
o = o.astype('uint8')
# 显式声明灰度模式
im = Image.fromarray(o, mode='L')
im.save('test.webp', lossless=True)
im = Image.open(r"test.webp")
a = np.asarray(im)
print(a.shape)  # 输出 (100, 100)

方法2:加载WebP后转换回灰度模式

如果保存环节无法避免格式转换,可在加载WebP图像后,通过convert('L')将三通道RGB图像转回单通道灰度:

import numpy as np
from PIL import Image, ImageOps

o = np.random.rand(100,100)*255
o = o.astype('uint8')
im = Image.fromarray(o)
im.save('test.webp', lossless=True)
# 加载后转灰度
im = Image.open(r"test.webp").convert('L')
a = np.asarray(im)
print(a.shape)  # 输出 (100, 100)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:12:15