如何从bytearray保存RGBA图像?PIL报错求解决
解决PIL保存RGBA像素数据报错的问题
错误原因
你用Image.open()读取的是裸RGBA像素字节数据,但Image.open()仅能识别包含格式头的完整图像文件(比如标准BMP),无法直接解析无文件头的原始像素数据,因此触发UnidentifiedImageError。
正确实现代码
利用Image.frombytes()直接从像素数据创建图像对象,再保存为目标格式(推荐PNG,原生支持RGBA透明):
from PIL import Image # 假设已定义变量:width(图像宽度), height(图像高度), rgba_bytearray(RGBA格式字节数组) # 从原始像素数据创建RGBA图像 img = Image.frombytes(mode="RGBA", size=(width, height), data=rgba_bytearray) # 保存为PNG(推荐,支持透明通道) img.save("output.png") # 若需保存为BMP,直接指定格式即可 # img.save("output.bmp", format="BMP")
原代码问题分析
- 重复调用
Image.open(stream),第一次调用后流指针移动到末尾,第二次读取为空数据。 - 核心错误:传入的bytearray是无格式头的裸像素数据,不符合
Image.open()的输入要求。
内容的提问来源于stack exchange,提问作者biluochun2010
相关产品推荐
相关产品推荐

