Python 在Sublime中打开PNG时,它显示的是什么编码以及如何转换?

Python 在Sublime中打开PNG时,它显示的是什么编码以及如何转换?,python,png,sublimetext2,decode,sublimetext,Python,Png,Sublimetext2,Decode,Sublimetext,我正在创建一个Python脚本,它执行一项任务,然后生成输出和一个PNG文件。当我将PNG文件放入升华文本时 提前感谢。您在Sublime中看到的“编码”只是PNG(也称为a)的十六进制表示形式 默认情况下,升华显示二进制文件的十六进制转储 字节1-3(字节0是89)是ascii'PNG' 50→ P 4e→ N 47→ G 请咨询一位专家,自己看看 如果在vim中打开该文件,会得到garbeldy-gook二进制混乱,但至少可以看到将其表示为PNG的文件魔法: 这是同样的图像。您只需要

我正在创建一个Python脚本,它执行一项任务,然后生成输出和一个PNG文件。当我将PNG文件放入升华文本时

提前感谢。

您在Sublime中看到的“编码”只是PNG(也称为a)的十六进制表示形式

默认情况下,升华显示二进制文件的十六进制转储

字节1-3(字节0是89)是ascii
'PNG'

  • 50
    → <代码>P
  • 4e
    → <代码>N
  • 47
    → <代码>G
请咨询一位专家,自己看看

如果在vim中打开该文件,会得到garbeldy-gook二进制混乱,但至少可以看到将其表示为PNG的文件魔法:

这是同样的图像。您只需要使用图像查看器(或浏览器)打开它

如果你想创建这个图像的hextump,只要读入它,用binascii转换它,瞧

import binascii
ff = open("cat.png", "rb")
data = ff.read()
ff.close()

txt = binascii.hexlify(data)

fw = open("cat.txt", "w")
fw.write(txt)
fw.close()
如果您有一个完整的十六进制转储(但没有空格),您可以转换回:

import binascii

ff = open("cat.txt", "r")
txt = ff.read()
ff.close()

image = binascii.unhexlify(txt)
如果您确实有空格(如上面使用Sublime时所述),只需在使用时去掉所有空格即可

import binascii

ff = open("cat.txt", "r")
txt = ff.read()
ff.close()

# Split on space, join back with no separator
txt = "".join(txt.split()) 

image = binascii.unhexlify(txt)

它只是个妖术。它与二进制文件有一对一的关系。这是您的PNG文件:)谢谢Elimirks。所以我需要一个python模块将十六进制转换成图像?你能展示一些生成PNG的代码吗?嗨,Kyle,这是生成PNG的完整代码:8950 4e47 0d0a 1a0a 0000 000d 4948 4452 0000 0020 0000 0020 0806 0000 0073 7a7a f400 0000 0662 4b47 4400 0000 00f9 43bb 7f00 0000 096f 4646 7300 0000 0000 0000 e000 8454 4522 0000 0009 7048 5973 0000 0b13 0000 0b13 0100 9C 1800 0000 3849 4441 5458 c3ed d541 0a00 2008 0041 ffff e97a 8187 08297406 bc2f 081a 01f0 b975 394d 024e 0928 0dc8 f62d 40c0 9c00 77e0 49c0 e86f 0894 db16 5a41 dbbd c804 f700 0000 0049 454e 44ae 4260 82您的问题相当不清楚。那么,你完成了什么任务?您是否制作了图片,并希望另存为png?多谢Kyle,我理解这一点,但是我如何使用python将十六进制保存为PNG呢?我在看PIL模块,但看不到太多的十六进制图像。编辑:完美。谢谢。你想用十六进制->二进制吗?我只是想把十六进制转换成png文件。我想我可以用你提供给我的代码来做。我现在要试一试:)