Grafica in TTY


8

È emerso qualcosa che mi richiede di lavorare solo nella riga di comando. Il mio lavoro principale è la programmazione (principalmente in Fortran e Octave) e ho bisogno di visualizzare grafici.

A titolo esemplificativo:

Apro l'ottava e scrivo ezplot('sin(x)') e viene emesso che X11 Display Environment non è impostato e non è in grado di aprire il display. Esiste un modo per visualizzare la grafica in TTY?

Ovviamente, non mi aspetto una grafica eccezionale, ma devo vedere se sono sulla strada giusta una volta ogni tanto.

Il mio attuale algoritmo è estremamente inefficiente. Io print -djpeg foo.jpege poi lo scp sul mio computer vicino. Prendilo in prestito e continua.


Tre domande ovvie mi vengono in mente: quale sistema operativo stai eseguendo sul tuo computer desktop? Sei sulla console di sistema o sei connesso in remoto? E, se connesso in remoto, quale protocollo / software usi per connetterti al computer remoto (es. SSH usando PuTTY)?
Alexios,

1
In realtà hai due domande diverse qui. Esiste un modo per visualizzare la grafica in TTY? (risposta: aalib o svgalib); e il non dichiarato Come posso stampare grafici su ASCII? (gnuplot, cernlib, ecc.). Puoi chiarire cosa vuoi piuttosto che come ti aspetti di raggiungerlo?
dmckee --- ex gattino moderatore


Un rapido google suggerisce che l'ottava non supporta direttamente Aalib e nessuno se ne preoccupa, ci sono segni che alcune persone vogliono che funzioni con svgalib, anche se non so se funzioni davvero.
dmckee --- ex gattino moderatore

In una nota diversa, se OP non vuole scpfile per tutto il tempo, esaminare sshfspotrebbe essere un'alternativa.
phk,

Risposte:


5

Se hai semplicemente una serie di .jpegimmagini che desideri visualizzare in un tty, puoi usare aviewo asciiview. Quando si chiama asciiviewcon un'immagine, convertirà l'immagine nel .pnmformato - utilizzando un programma esterno come NetPBM o ImageMagic - prima di passarlo a aviewper la visualizzazione. Il .pnmè il asciiformato di immagine utilizzata per rappresentare l'immagine come insieme di caratteri. Per visualizzare un'immagine in questo formato, utilizzare semplicemente:

$ asciiview foo.jpeg

o per salvare .pnmprima una copia:

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

Questi supportano il driver da aalib.


Nessuna delle altre parole del metodo.

5

Non puoi eseguire un server X su un altro tty e passare ad esso quando è necessario? Se hai una macchina accanto a te che esegue X, puoi usare l' inoltro X11 per visualizzarlo lì.


Un esempio di questo può essere trovato in questa domanda.
Emanuel Berg,

5

La risposta più diretta è usare jp2a : da JPEG a ASCII.

Forse puoi usare la famosa biblioteca ascii-art: libcaca . Permette anche di vedere un film in un terminale , quindi dovrebbe funzionare anche con un semplice jpeg.


2

Puoi disegnare direttamente grafici come ASCII con gnuplot;
Impostare il tipo di terminale su dumb, è tutto ciò che serve:

$ 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
Non correlato a OP ma noto che ha anche il terminale canvas , il che è fantastico!

@ Amphiteóth Sì, anche quello è interessante - sta eseguendo il rendering su una tela HTML, giusto? Lo avrei menzionato se il browser in modalità testo linkse elinkspotesse renderlo.
Volker Siegel,

1
Sì, con sth come set output 'output.html'se ottenessi quel file e guardando il sorgente, è come JS in linea e chiama canvastext.js e gnuplot_common.js . Non lo sapevo! Abbastanza utile!

2

Se si utilizza un programma terminale in grado di visualizzare la grafica sixel , ad esempio uno xtermo uno dei suoi derivati, è possibile convertire le immagini in formato sixel con PySixel e output, oppure integrare un filtro che stampa direttamente i comandi sixel.

In questo modo, avrai una vera grafica a colori (non ASCII) nel terminale.


1

Se sei su una console TTY su Linux o FreeBSD, puoi usare svgalib per mostrare le immagini in modalità grafica, senza X11. La libreria può cambiare la console in modalità grafica - oggi non è comunemente usata, perché X11 ha i suoi vantaggi.

C'è un visualizzatore di immagini per la console, che potrebbe richiedere alcune modifiche per costruirlo perché è un po 'obsoleto, ma vale la pena provare.

Il visualizzatore di immagini zgv: esiste anche un visualizzatore simile per X11, chiamato xzgv, nel caso in cui l'interfaccia ti piaccia molto.


0

Per la grafica reale la tua scommessa migliore (e forse solo) è svgalib , ma tieni presente che non ha nulla in comune con X11, quindi dovrai scrivere il tuo sostituto per ezplot.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.