0

.bmp ファイルから色を収集してパレットを作成するために、一度に 4 バイトの bmp ファイルを読み込んでいます。ファイルを読むと、b'\x8b\xc3\**x00J**\x00'. このファイルを 16 進エディタで開くと、バイト文字列はb'\x8b\xc3\**x4a**\x00. に入れようとすると、その特定のバイトがプログラムを壊しますdispalyio.palette。私の理解では、Python は (有効な ascii 表現を持つ) バイトを ascii に自動デコードします。

最終的には、そのファイルからデコードせずに、一度に 4 バイトの生のバイト文字列を取得したいだけです。私のコードは次のようになります。

palette = displayio.Palette(2)
with open("images/f.bmp", "rb") as f:
    f.seek(137)
    for val in range(0, 1):
        try:
            c_bytes = f.read(4)
            #print(c_bytes[0:2])
            print(b''.join([c_bytes[3:4], c_bytes[2:3], c_bytes[0:2]]))
            palette[0] = b''.join([c_bytes[3:4], c_bytes[1:3], c_bytes[0:2]])
        except Exception as e:
            print(e)

これは、モジュールを使用した CircuitPython 6.3.0 上にありdisplayioます。なじみのない CircuitPython は、MCU 向けの Python のスリム化されたバージョンであり、Python 3 をベースとして使用します。

4

0 に答える 0