Python:将包含二进制数据的.txt转换为png
我有一个包含Python:将包含二进制数据的.txt转换为png,python,binary,png,Python,Binary,Png,我有一个包含png二进制数据的文本文件(至少,我很确定它是这样的,所以我要放弃这个假设) 无论如何:我需要把它变成一个png 我尝试使用binascii库来执行此操作,即unexlify,但在尝试打开图像时,我只得到一个“此文件已损坏”错误 那么我要问的是:如何将str放入一个文件中,以便能够将其视为图像?谢谢如果我理解正确,您的文件由ascii格式的1和0组成,因此打开(“myfile.txt”,“r”)。read()返回“100110000…” 在这种情况下,以下内容应有帮助: with o
png
二进制数据的文本文件(至少,我很确定它是这样的,所以我要放弃这个假设)
无论如何:我需要把它变成一个png
我尝试使用binascii
库来执行此操作,即unexlify
,但在尝试打开图像时,我只得到一个“此文件已损坏”
错误
那么我要问的是:如何将
str
放入一个文件中,以便能够将其视为图像?谢谢如果我理解正确,您的文件由ascii格式的1和0组成,因此打开(“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)
unexlify
会给您带来麻烦,因为它试图从十六进制转换,而文件是二进制的。您需要将前8个字符(10011000
)转换为“\x98”
,但unexlify
将它们视为4对十六进制数10
,01
,10
,00
,因此将转换为'\x10\x01\x10\x00'
话虽如此,当我在你的文件样本上运行这个时,我并没有得到一个看起来像PNG图像的结果。根据PNG规范,PNG文件的第一个字节始终为137,而文件的第一个字节为10011000=0x98=152。请至少显示文件的开头。它是否以
‰PNG
开头?使用89504E47
?如何将二进制文件转换为二进制文件?如果您的文件确实是二进制文件,请重命名它。如果可以打印,请在您的问题中包含一个示例。好的,因此将文本重命名为img.png只会在png文件中存储相同的0和1。我需要一种方法将这些0和1转换为‰PNG
将采用的任何格式。参考:这里有一点文件:这不是我想要的,但已经足够接近了。尤其是你链接的页面。结果我把链条上更高的地方搞砸了。