我有一个包含 a 的二进制数据的文本文件png
(至少,我很确定它确实如此,所以我要放弃这个假设)。
不管怎样:我需要把它变成一个png
.
我尝试使用该binascii
库来执行此操作,即unhexlify
,但是"this file is corrupted"
当我尝试打开图像时出现错误。
所以我要问的是:如何将 astr
放入文件中,以便能够将其视为图像?谢谢
如果我理解正确,您的文件由 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
, 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 .