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

如何使用Python PIL将图像位深度转换为24位

不同位深度图像转24位真彩色实现方案

你原有代码的问题在于使用convert("P")是将图像转为8位索引调色板模式,且设置colors=8仅保留8种颜色,和24位真彩色的目标完全不匹配。
24位图像在PIL中对应RGB模式:每个像素包含红、绿、蓝三个独立色彩通道,单通道位深为8位,合计24位,不包含透明Alpha通道。

通用基础转换代码

适用于所有32位(RGBA)、16位、48位等位深的源图像,转换后自动丢弃透明通道,输出标准24位图像:

from PIL import Image

img = Image.open("image.png")
# 直接转换为RGB模式即得到24位真彩色图像
img_24 = img.convert("RGB")
img_24.save("image_24bit.png")

带透明通道的32位图像自定义处理

如果源图是带Alpha透明层的32位RGBA图像,直接转RGB会默认把透明区域填充为黑色,需要自定义透明区域填充色时使用以下代码:

from PIL import Image

img = Image.open("image.png")
# 校验源图是否包含透明通道
if img.mode in ("RGBA", "LA") or (img.mode == "P" and "transparency" in img.info):
    img = img.convert("RGBA")
    # 自定义背景填充色,(255,255,255)为白色,可按需修改RGB值
    background = Image.new("RGB", img.size, (255, 255, 255))
    # 按Alpha通道将原图合成到背景上
    background.paste(img, mask=img.split()[3])
    img_24 = background
else:
    img_24 = img.convert("RGB")

img_24.save("image_24bit.png")

位深校验方法

保存前可以通过以下代码确认输出图像符合24位要求:

# 模式为RGB即代表三通道,单通道默认8位,合计24位
print(f"图像模式:{img_24.mode},单通道位深:{img_24.bits}")

输出结果显示图像模式:RGB,单通道位深:8即为符合要求的24位图像。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:51:27