-4

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

提前致谢。

4

1 回答 1

8

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

Sublime 默认显示二进制文件的十六进制转储。

崇高的十六进制

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

  • 50P
  • 4eN
  • 47G

请查阅ascii 表以亲自查看。

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

vim 二进制

虽然是同一张图。您只需要使用图像查看器(或浏览器)打开它。

猫

如果您想创建此图像的 hexdump,只需将其读入,使用 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)
于 2013-10-13T13:02:15.860 回答