Труба STDOUT для изображения?

293
rjh427

Недавно я хотел запустить команду терминала, такую ​​как «git show <hash>», и сохранить вывод в изображение, предпочтительно PNG.

Я немного погуглил и нашел несколько хитрых трюков, особенно с командой import, но ничего, что могло бы надежно захватить STDOUT и сохранить его как изображение.

Итак, я подумал, что попрошу мозг довериться здесь. У кого-нибудь есть проверенное и проверенное решение для Linux?

1
Просто чтобы прояснить, вы хотите, чтобы он отображал текст как изображение (поэтому, когда вы смотрите на текст, вы можете прочитать текст), верно? Поскольку ответы на эти вопросы могут быть более сложными, чем «Я хочу, чтобы байты ASCII / Unicode текста стали байтами файла изображения, даже если это будет изображение, которое выглядит просто как случайные / поврежденные / мусорные пиксели» или « Я хочу, чтобы байты текста ASCII / Unicode были сохранены в метаданных или в каком-то скрытом поле формата файла изображения ". Spiff 6 лет назад 1
Отобразить этот вывод как читаемый текст, да. Сохранение цвета, если возможно, потому что в моем файле .bashrc установлено «force_color_prompt = yes», но я могу попытаться временно перевернуть эту настройку, если она будет иметь значение. rjh427 6 лет назад 0

2 ответа на вопрос

2
Tonny

Как преобразовать текст в изображение уже ответили здесь: https://stackoverflow.com/questions/3826379/image-magick-converting-text-to-image-is-there-a-way-to-center-the -text-to-t Этот ответ предоставляет различные варианты того, как это сделать с помощью инструментов ImageMagick.

Обратите внимание: это будет работать надежно только в том случае, если вывод вашей команды - простой текст.
Если есть какое-либо необычное форматирование (например, ncurses), результаты могут быть совершенно непредсказуемыми.

Конвертировать, да. Я попробовал несколько вещей с этим, не мог заставить ни одну из них работать вообще. Возможно, потому что я установил «force_color_prompt = yes» в моем файле .bashrc и что вы упомянули. rjh427 6 лет назад 0
0
dirkt

Частичный ответ, перечисляя некоторые возможности:

Существует несколько программ, которые вы можете использовать для рендеринга текста в изображения, например:

  • convert от ImageMagick / GraphicsMagick
  • pbmtext из NetPBM, рендеринг в Portable Bitmap
  • paps, рендерит в Postscript с помощью Pango
  • enscript, делает для Postscript

Но преобразование другого формата в PNG не должно быть проблемой.

Из них только enscriptподдерживает цвета через «специальные escape-коды». Это не то же самое, что экранирование терминала, поэтому вы должны конвертировать их с помощью awk / perl и т. Д.

Другой вариант - сделать все это в xterm и на скриншоте.

Как видите, все они довольно сложны, по желанию требуются нетривиальные усилия, чтобы заставить их работать. Что неудивительно, потому что в основном вы хотите воспроизвести всю часть рендеринга вашего терминала.

Может быть проще просто сохранить сам вывод и извлечь его в терминале, когда вы захотите посмотреть на него.

Так что это определенно нетривиально, как я понял. Растровые изображения будут работать, но они не так привлекательны, так как они не сжаты. Сохранение в виде postscript может привести к некоторым желательным вариантам, цель - сохранить git showвывод в форме, которой можно поделиться с другими (подумайте портфолио). Или, может быть, есть еще лучший вариант, о котором я еще не думал. rjh427 6 лет назад 0
Как я уже сказал, окончательный формат не проблема - вы можете свободно конвертировать из PBM в PNG или из Postscript в PNG на последнем этапе. Основная проблема - рендеринг текста с цветными переходами. * Сохранение * `git show` вывода может быть сделано просто сохранением его в файле с` git show> xxx` или `git show --pretty = blah> xxx`. Если вам это нужно для какого-то резюме, преобразовать его в любые команды, которые нужны вашей системе обработки текста, будет значительно проще, чем преобразовать его в рисунок. dirkt 6 лет назад 0

Похожие вопросы