我有一个文本文件,其中包含png
的二进制数据(至少,我很确定它确实如此,所以我将不再考虑这个假设)。
无论如何:我需要将它变回png
。
我尝试使用binascii
库来执行此操作,即unhexlify
,但我在尝试打开图片时遇到"this file is corrupted"
错误。
所以我在问:如何将str
放入文件中,以便我能够将其视为图像?感谢
答案 0 :(得分:0)
如果我理解正确,你的文件由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
在尝试从十六进制转换时给你带来麻烦,而文件是二进制文件。您需要将前8个字符(10011000
)转换为"\x98"
,但unhexlify
会将其视为4对十六进制数字10
,01
,{ {1}},10
,因此会转换为00
。
话虽如此,当我在你的文件样本上运行它时,我得不到看起来像PNG图像的结果。根据PNG规范http://www.libpng.org/pub/png/spec/1.2/PNG-Structure.html,PNG文件的第一个字节始终为137,而文件的第一个字节为10011000 = 0x98 = 152。