Графика в TTY

Что-то придумало, что требует от меня работы только в командной строке. Моя основная задача – программирование (в основном в Fortran и Octave), и мне нужно отображать графики.

В качестве хромого примера:

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

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

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

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

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

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

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

 $ asciiview foo.jpeg 

или сначала .pnm копию .pnm :

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

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

Вы можете напрямую рисовать графики как 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> 

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

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

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

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

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

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