のバイナリ データを含むテキスト ファイルがありますpng
(少なくとも、そうであると確信しているので、その仮定から外れます)。
とにかく:私はそれをに戻す必要がありpng
ます。
binascii
ライブラリを使用してそれを実行しようとしましたunhexlify
が、画像を開こうとする"this file is corrupted"
とエラーが発生します。
だから私が求めてstr
いるのは、画像として見ることができるようにファイルに入れるにはどうすればよいですか? ありがとう
私の理解が正しければ、あなたのファイルは ascii の 1 と 0 で構成されているのでopen("myfile.txt", "r").read()
、"100110000..."
その場合、以下が役立ちます。
with open("myfile.txt", "r") as f:
txt = f.read()
b = "".join(chr(int(txt[i*8:(i+1)*8],2)) for i in range(len(txt) / 8))
with open("myfile.png", "wb") as f:
f.write(b)
unhexlify
ファイルがバイナリであるのに、16 進数から変換しようとしているため、問題が発生しています。最初の 8 文字 ( 10011000
) を に変換する必要"\x98"
がありますが、それらは 4 組の 16 進数, ,unhexlify
として扱われ、したがって に変換されます。10
01
10
00
'\x10\x01\x10\x00'
そうは言っても、ファイルサンプルでこれを実行すると、PNG画像のような結果が得られません. PNG 仕様http://www.libpng.org/pub/png/spec/1.2/PNG-Structure.htmlによると、PNG ファイルの最初のバイトは常に 137 ですが、ファイルの最初のバイトは 10011000 = 0x98 = 152 です。 .