-1

我有一个包含 a 的二进制数据的文本文件png(至少,我很确定它确实如此,所以我要放弃这个假设)。

不管怎样:我需要把它变成一个png.

我尝试使用该binascii库来执行此操作,即unhexlify,但是"this file is corrupted"当我尝试打开图像时出现错误。

所以我要问的是:如何将 astr放入文件中,以便能够将其视为图像?谢谢

4

1 回答 1

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, 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 .

于 2013-04-28T01:42:52.350 回答