Đồ họa trong TTY


8

Một cái gì đó đã đưa ra mà đòi hỏi tôi chỉ làm việc trong dòng lệnh. Công việc chính của tôi là lập trình (chủ yếu ở Fortran và Octave) và tôi cần hiển thị các ô.

Như một ví dụ khập khiễng:

Tôi mở quãng tám và gõ ezplot('sin(x)') và nó xuất ra Môi trường hiển thị X11 không được đặt và không thể mở màn hình. Có cách nào để tôi xem đồ họa trong TTY không?

Rõ ràng, tôi không mong đợi đồ họa tuyệt vời nhưng tôi cần phải xem liệu tôi có đang đi đúng hướng một lần không.

Thuật toán hiện tại của tôi là cực kỳ không hiệu quả. Tôi print -djpeg foo.jpegvà sau đó scp nó đến máy tính hàng xóm của tôi. Mượn điều đó và tiếp tục.


Ba câu hỏi rõ ràng nảy ra trong đầu: bạn đang chạy hệ điều hành nào trên máy tính để bàn của mình? Bạn đang trên bảng điều khiển hệ thống, hoặc kết nối từ xa? Và, nếu được kết nối từ xa, bạn sử dụng giao thức / phần mềm nào để kết nối với máy từ xa (ví dụ: SSH sử dụng PuTTY)?
Alexios

1
Bạn thực sự có hai câu hỏi khác nhau ở đây. Có cách nào để tôi xem đồ họa trong TTY không? (câu trả lời: aalib hoặc svgalib); và không biết Làm thế nào tôi có thể in biểu đồ sang ASCII? (gnuplot, cernlib, v.v.). Bạn có thể làm rõ những gì bạn muốn hơn là cách bạn mong đợi để đạt được nó?
dmckee --- người điều hành cũ mèo con


Một google nhanh chóng gợi ý rằng quãng tám không hỗ trợ trực tiếp aalib và không ai quan tâm, có những dấu hiệu cho thấy một số người muốn nó hoạt động với svgalib, mặc dù tôi không biết nếu nó thực sự hoạt động.
dmckee --- người điều hành cũ mèo con

Ở một lưu ý khác, nếu OP không muốn scptập tin mọi lúc thì việc xem xét sshfscó thể là một sự thay thế.
phk

Câu trả lời:


5

Nếu bạn chỉ đơn giản là có một loạt các .jpeghình ảnh mà bạn muốn hiển thị trong một tty, bạn có thể sử dụng aviewhoặc asciiview. Khi gọi asciiviewbằng một hình ảnh, nó sẽ chuyển đổi hình ảnh sang .pnmđịnh dạng - sử dụng một chương trình bên ngoài như NetPBM hoặc ImageMagic - trước khi chuyển nó sang aviewđể hiển thị. Các .pnmasciiđịnh dạng hình ảnh sử dụng để đại diện cho hình ảnh như tập hợp các ký tự. Để xem hình ảnh ở định dạng này, chỉ cần sử dụng:

$ asciiview foo.jpeg

hoặc để lưu một .pnmbản sao trước:

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

Những hỗ trợ người lái xe từ aalib.


Không có phương pháp nào khác.

5

Bạn có thể không chạy máy chủ X trên một tty khác và chuyển sang nó khi bạn cần không? Nếu bạn có một máy bên cạnh bạn đang chạy X, thì bạn có thể sử dụng chuyển tiếp X11 để nó hiển thị ở đó.


Một ví dụ về điều này có thể được tìm thấy trong câu hỏi này .
Emanuel Berg

5

Câu trả lời trực tiếp nhất là sử dụng jp2a : JPEG sang ASCII.

Có lẽ bạn có thể sử dụng thư viện nghệ thuật ascii nổi tiếng: libcaca . Nó thậm chí còn cho phép xem phim trong một thiết bị đầu cuối , vì vậy nó cũng sẽ hoạt động đối với jpeg đơn giản.


2

Bạn có thể trực tiếp vẽ biểu đồ như ASCII với gnuplot;
Đặt loại thiết bị đầu cuối thành dumb, đó là tất cả những gì bạn cần:

$ 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
Không liên quan đến OP nhưng tôi lưu ý rằng nó cũng có thiết bị đầu cuối canvas , thật tuyệt!

@ Amphiteóth Vâng, cái đó cũng thú vị - nó được hiển thị trên một khung vẽ HTML, phải không? Tôi đã có thể đề cập đến nó nếu trình duyệt linkselinkschế độ văn bản có thể hiển thị nó.
Volker Siegel

1
Có, với sth như set output 'output.html'bạn nhận được tệp đó và nhìn vào nguồn, nó giống như JS nội tuyến và gọi canvastext.jsgnuplot_common.js . Không biết điều này! Khá hữu dụng!

2

Nếu bạn đang sử dụng một chương trình đầu cuối có khả năng hiển thị đồ họa Sixel , ví dụ như một xtermhoặc một trong các dẫn xuất của nó, bạn có thể chuyển đổi hình ảnh thành định dạng Sixel với PySixel và đầu ra, hoặc tích hợp bộ lọc in trực tiếp các lệnh Sixel.

Theo cách đó, bạn sẽ có đồ họa màu thực sự (không phải ASCII) trong thiết bị đầu cuối.


1

Nếu bạn đang sử dụng bảng điều khiển TTY trên Linux hoặc FreeBSD, bạn có thể sử dụng svgalib để hiển thị hình ảnh ở chế độ đồ họa mà không cần X11. Thư viện có thể chuyển giao diện điều khiển sang chế độ đồ họa - ngày nay nó không được sử dụng phổ biến, vì X11 có lợi thế của nó.

Có một trình xem hình ảnh cho giao diện điều khiển, có thể cần một số điều chỉnh để xây dựng nó vì nó hơi lỗi thời, nhưng nó đáng để thử.

Trình xem hình ảnh zgv- cũng có một trình xem tương tự cho X11, được đặt tên xzgv, trong trường hợp bạn phát triển rất thích giao diện.


0

Đối với đồ họa thực tế, đặt cược tốt nhất (và có thể duy nhất) của bạn là svgalib , nhưng lưu ý rằng nó không có gì chung với X11, vì vậy bạn sẽ cần phải viết thay thế cho riêng mình ezplot.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.