Графика в TTY


8

Пришло что-то, что требует от меня работать только в командной строке. Моя основная работа - программирование (в основном на Фортране и Октаве), и мне нужно отображать графики.

В качестве неудачного примера:

Я открываю октаву и печатаю, ezplot('sin(x)') и она выводит, что X11 Display Environment не установлен и не может открыть дисплей. Могу ли я посмотреть графику в TTY?

Очевидно, я не ожидаю отличную графику, но мне нужно посмотреть, нахожусь ли я на правильном пути время от времени.

Мой текущий алгоритм крайне неэффективен. Я print -djpeg foo.jpegи затем scp это к моему соседнему компьютеру. Займи это и продолжай.


На ум приходят три очевидных вопроса: какую ОС вы используете на своем компьютере? Вы на системной консоли или подключены удаленно? И, если подключено удаленно, какой протокол / программное обеспечение вы используете для подключения к удаленному компьютеру (например, SSH с использованием PuTTY)?
Алексиос

1
У вас здесь два разных вопроса. Могу ли я посмотреть графику в TTY? (ответ: аалиб или свалиб); и неустановленный Как я могу печатать графики в ASCII? (gnuplot, cernlib и т. д.). Можете ли вы уточнить, что вы хотите, а не как вы ожидаете достичь этого?
dmckee --- котенок экс-модератора


Быстрый гугл предполагает, что октава не поддерживает aalib напрямую и никого не волнует, есть признаки того, что некоторые люди хотят, чтобы он работал со svgalib, хотя я не знаю, работает ли он на самом деле.
dmckee --- котенок экс-модератора

С другой стороны, если OP не хочет scpфайлы все время, то поиск sshfsможет быть альтернативой.
phk

Ответы:


5

Если у вас просто есть серия .jpegизображений, которые вы хотите отобразить в tty, вы можете использовать aviewили asciiview. При вызове asciiviewс изображением оно преобразует изображение в .pnmформат, используя внешнюю программу, такую ​​как NetPBM или ImageMagic, перед тем, как передать его aviewдля отображения. .pnmЯвляется asciiформат изображения , используемый для представления изображения в виде набора символов. Чтобы просмотреть изображение в этом формате, просто используйте:

$ asciiview foo.jpeg

или .pnmсначала сохранить копию:

$ convert foo.jpeg foo.pnm
$ aview foo.pnm

Они поддерживают драйвер от aalib.


Ни один из других методов слова.

5

Разве вы не можете запустить X-сервер на другом tty и переключаться на него, когда это необходимо? Если у вас есть машина под управлением X, вы можете использовать переадресацию X11, чтобы она отображалась там.


Пример этого можно найти в этом вопросе.
Эмануэль Берг

5

Самый прямой ответ - использовать jp2a : JPEG в ASCII.

Может быть, вы можете использовать знаменитую библиотеку ascii-art: libcaca . Он даже позволяет смотреть фильм в терминале , поэтому он также должен работать для простого JPEG.


2

Вы можете напрямую рисовать графики как ASCII с gnuplot;
Установите тип терминала dumb, это все, что вам нужно:

$ gnuplot
gnuplot> set terminal dumb
Terminal type set to 'dumb'
Options are 'feed  size 79, 24'
gnuplot> plot sin(x)



    1 ++---------------***---------------+---**-----------+--------**-----++
      +                *  *              +  *  **         +  sin(x) ****** +
  0.8 ++              *   *                 *    *               *    *   ++
      |              *     *               *     *               *     *   |
  0.6 *+             *      *              *     *               *     *  ++
      |*             *      *             *       *             *       *  |
  0.4 +*            *       *             *       *             *       * ++
      |*            *        *            *        *           *        *  |
  0.2 +*           *         *            *        *           *         *++
    0 ++*          *          *          *         *          *          *++
      | *          *          *         *           *         *           *|
 -0.2 ++ *         *          *         *           *         *           *+
      |  *        *           *        *             *        *           *|
 -0.4 ++ *        *            *       *             *       *            *+
      |  *       *              *      *             *      *              *
 -0.6 ++  *      *              *      *             *      *             +*
      |    *    *               *     *               *     *              |
 -0.8 ++   *    *                *   *                 *   *              ++
      +     *  *       +         **  *   +             *  *                +
   -1 ++-----**--------+-----------**----+--------------***---------------++
     -10              -5                 0                5                10

gnuplot>

1
Не относится к OP, но я отмечаю, что у него также есть терминал canvas , и это здорово!

@ Amphiteóth Да, это тоже интересно - это рендеринг на холст HTML, верно? Я бы говорил об этом , если linksи elinksрежиме браузер текста может сделать это.
Фолькер Сигел

1
Да, с sth, как set output 'output.html'вы получаете этот файл, и, глядя на источник, он похож на встроенный JS и вызывает canvastext.js и gnuplot_common.js . Не знал этого! Довольно полезно!

2

Если вы используете терминальную программу, которая способна отображать шестизвенную графику, например, один xtermили один из его производных, вы можете конвертировать изображения в шестизначный формат с помощью PySixel и выводить или иным образом интегрировать фильтр, который печатает шестизначные команды напрямую.

Таким образом, у вас будет истинная цветная графика (не ASCII) в терминале.


1

Если вы используете консольный TTY в Linux или FreeBSD, вы можете использовать svgalib для показа изображений в графическом режиме без X11. Библиотека может переключить консоль в графический режим - сегодня она обычно не используется, потому что у X11 есть свои преимущества.

Для консоли имеется средство просмотра изображений, для создания которого могут потребоваться некоторые настройки, поскольку оно несколько устарело, но его стоит попробовать.

Просмотрщик изображений zgv- есть также похожий просмотрщик для X11, названный xzgvна случай, если вам очень понравится интерфейс.


0

Для реальной графики ваша лучшая (и, возможно, единственная) ставка - это svgalib , но имейте в виду , что она не имеет ничего общего с X11, поэтому вам нужно написать свою собственную замену ezplot.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.