python · 2023年10月13日 0

《png文件转dat文件》

from PIL import Image
import struct
import numpy as np

def color565(r,g,b):
    return (r & 0xf8 )<< 8 | (g & 0xfc) << 3 | b >>3

def main():
    img = Image.open("img13.png")
    print(img.format, img.size, img.mode)

    # 如果图像模式不是RGB,进行转换
    if img.mode != "RGB":
        img = img.convert("RGB")

    img_data = np.array(img)

    with open("img13.dat", "wb") as f:
        for line in img_data:
            for dot in line:
                r, g, b = dot
                f.write(struct.pack("H", color565(r, g, b))[::-1])


if __name__=="__main__":
    main()