Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:将包含二进制数据的.txt转换为png_Python_Binary_Png - Fatal编程技术网

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
将采用的任何格式。参考:这里有一点文件:这不是我想要的,但已经足够接近了。尤其是你链接的页面。结果我把链条上更高的地方搞砸了。