今日在调试4bpp的屏幕格式,需要把framerbuffer转换成图片,搜索到了如下文章
https://stackoverflow.com/questions/62765455/convert-images-bit-depth-with-pypng
尝试参考,写出我需要的代码,放在此处记录,
提示没有png库的,参考https://www.cnpython.com/qa/35547
我用的conda,所以直接在windows中敲装的库
conda install -c eaton-lab pypng
import png
import numpy as np
from PIL import Image
im = np.zeros([480,640], dtype = np.int8,order = 'C')
binfile = open('m.bin', 'rb')
for i in range(480):
for j in range(320):
buffer = binfile.read(1)
im[i][j*2] = int.from_bytes(buffer,byteorder='little') / 16
im[i][j*2+1] = int.from_bytes(buffer,byteorder='little')&0xf
print(im)
with open('png-4bpp.png', 'wb') as f:
png_writer = png.Writer( 640,480, bitdepth=4) # without palette
#png_writer = png.Writer(480, 640, bitdepth=4, palette=palette) # with palette
png_writer.write(f, im)