2013-10-13 2 views
-4

Я создаю скрипт Python, который выполняет задачу, а затем создает выходные данные вместе с PNG-файлом. Когда я помещаю PNG-файл в текст Sublime.Когда вы открываете PNG в Sublime, какое кодирование оно показывает и как вы его конвертируете?

Заранее спасибо.

+3

Это просто гексагон. Он имеет отношение один к одному с двоичным. http://en.wikipedia.org/wiki/Hexadecimal Это ваш PNG-файл :) – elimirks

+0

Спасибо Elimirks. Итак, мне нужен модуль python, который преобразует hex в изображение? – BubbleMonster

+0

Можете ли вы показать код, который создает PNG? –

ответ

8

«Кодировка», которую вы видите в Sublime, представляет собой шестнадцатеричное представление PNG (также называемое hexdump).

Sublime, по умолчанию показывает шестнадцатеричный дамп двоичных файлов.

sublime hex

Байты 1-3 (байты-89) являются ASCII 'PNG'.

  • 50P
  • 4eN
  • 47G

Обратитесь к ascii table, чтобы увидеть для себя.

Если открыть файл в Vim, вы получите garbeldy Гук двоичный беспорядок, но вы можете по крайней мере увидеть файл магии обозначив это как PNG:

vim binary

Это то же самое изображение, хотя , Вам просто нужно открыть его с помощью средства просмотра изображений (или вашего браузера).

cat

Если Вы желаете создать шестнадцатеричные этот образ, просто прочитать его, преобразовать его с 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) 

Если у вас есть пробелы (как выше с возвышенного), просто избавиться от всех пробел, пока вы на нем.

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) 
+0

Спасибо Кайл, я это понимаю, но как я могу использовать python для сохранения этого шестнадцатеричного кода в качестве PNG? Я смотрел на модуль PIL, но не вижу многого на шестнадцатеричном изображении. EDIT: Отлично. Благодарю. – BubbleMonster

+0

Вы хотите пойти hex -> двоичный? –

+0

Ну, я просто хотел преобразовать этот гекс в файл png. Думаю, я могу сделать это с кодом, который вы мне предоставили. Я собираюсь попробовать сейчас :) – BubbleMonster

Смежные вопросы