【发布时间】:2020-07-24 14:46:04
【问题描述】:
我正在尝试使用 numpy 将二进制字符串转换为 Python 中的图像,但我很难找到一种通过非常规位分布(据我所知)来处理它的好方法。
这些是转换方式和转换内容的细节。
16 位纹理图块 (256*256)。每个 bitu16 代表一个像素,其颜色的格式为 ARGB,MSB 到 LSB:
1 位透明度
5位红色通道
5位绿色通道
5位蓝色通道
Numpy 并不真正支持任何 1 位或 5 位。我尝试使用不同的 argb 通道设置 np.dtype 但没有任何运气。 unpackbits 似乎不适用于 uint16,所以在这种情况下,我可能不得不将其拆分为 2 个 uint8
dt = np.dtype([('a', np.bool_), ('r', np.half), ('g', np.half), ('b', np.half)])
data = data.read(131072)
dataFromBuffer = np.frombuffer(data, dtype=dt)
img = dataFromBuffer.reshape(256, 256)
【问题讨论】:
标签: python numpy python-imaging-library bin