콘솔에 이미지를 표시하시겠습니까(저주)?

콘솔에 이미지를 표시하시겠습니까(저주)?

X 창 없이 콘솔에 이미지를 표시하려면 어떤 방법을 사용할 수 있습니까?

예를 들어,curses/ncurses를 사용하여 콘솔을 여러 창으로 나눌 수 있지만 어떤 경우에는 창 중 하나에 이미지를 표시하고 싶습니다. 이미지를 표시하기 위해 X로 전환하고 모든 부담과 오버헤드를 감수해야 하는 것은 완전히 중복된 것처럼 보입니다. 윈도우 시스템이나 마우스 처리가 필요하지 않습니다. 화면에 이미지를 올려놓기만 하면 됩니다.

X Windows의 문제점은 이것이 "창" 시스템이라는 것입니다. 반면 저는 Curse와 같은 프레임 기반 접근 방식(겹침 없음)을 선호합니다. (내 생각에는 전체 "창" 패러다임이Xerox PARC에서 발명"창문"을 테이블 위에 쌓인 종이 조각에 비유하는 것은 어리석은 일입니다. )

이론적으로 이는 콘솔이 실제로 더 이상 실제 콘솔이 아니기 때문에 가능해야 합니다. 이는 실제로 픽셀 단위 제어가 가능한 전체 화면 해상도로 구현되는 아날로그 콘솔입니다. 문제는 콘솔에서 제한된 래스터 이미지 표시를 지원하기 위해 이 에뮬레이터를 확장하는 방법입니다.

가능한 해결책 중 하나는 (Linux에만 해당되지만) 다음과 같습니다.Linux 프레임버퍼 기능(fbdev). ncurses와 잘 작동하도록 만드는 것이 가능합니까?

답변1

"에뮬레이트된 콘솔"은 언급한 것처럼 시스템에 따라 다릅니다 fbdev. 또한 일반적으로 커널에 통합되어 있으므로 직접 수정하려면 커널을 수정해야 하며 이는 확실히 X를 사용하는 것보다 더 "과잉"입니다.

fbdev를 직접 사용할 수도 있고 Thomas Dickey가 제안한 대로 SDL을 기반으로 뭔가를 작성할 수도 있지만, 그가 말했듯이 필요한 모든 작업이 완료되지 않았으며 표시되는 작업의 양을 과소평가해서는 안 됩니다.

하지만 가장 일반적이긴 하지만데스크탑 환경꽤 무겁지만 X 자체는 (어느 현대 표준에 따르면) 그렇지 않습니다. 주로 텍스트 기반 애플리케이션이 있지만 때때로 이미지를 게시해야 하는 경우 X 사용을 고려하세요.아니요데스크탑 환경. 어떻게? 창 관리자 없이 X 서버 및(또는 선택한 터미널 에뮬레이터) 전체 화면을 startx시작하려면 스크립트를 사용하거나 사용자 정의하세요(또는 초경량 WM 대안 중 하나를 찾으세요). xterm원하는 경우 마우스 커서를 숨길 수 있습니다. 그런 다음 텍스트 모드 프로그램 내에서 화면의 지정된 위치에서 경량 이미지 표시 X 클라이언트를 시작 및 중지하고 프로그램 제어 하에 삭제할 수 있습니다. xterm화면의 일부가 가려지도록 텍스트의 크기를 조정하거나 조정할 수 있습니다 . 물론 이 주제에는 수많은 변형이 있지만 아이디어를 얻으실 수 있습니다.

나는 RAM이 4Mb 미만(GB 아님)인 Unix 시스템에서 X를 사용했기 때문에 X가 부풀어올 필요가 없습니다. 유익한 부작용은 플랫폼 이식성(X 서버를 사용하여 모든 대상을 대상으로 할 수 있음)과 원격 실행 기능을 얻을 수 있다는 것입니다.

답변2

원칙적으로는 그럴 수도 있다. 그러나 필요한 모든 작업이 아직 완료되지 않았습니다. 저주POSIX 기반테미오스, 프레임 버퍼는 그것과 아무 관련이 없습니다.

PD의 저주SDL을 사용하도록 포팅됨(간단한 다이렉트 미디어), 따라서 "타당함"입니다.

답변3

엄밀히 말하면 ncurses는 아니지만용어이미지 지원 기능이 내장된 터미널 에뮬레이터입니다. fbdev 백엔드를 사용하여 EFL을 빌드하면 X 없이 실행됩니다. fbdev는 Linux 커널에서 더 이상 사용되지 않는 것으로 간주되므로 이에 대한 새 드라이버가 생성되지 않습니다. fbdev 백엔드를 사용하여 용어를 실행하려면:

ELM_ENGINE=fb terminology

배포판에 따라 EFL은 fbdev 지원을 구축할 수도 있고 구축하지 않을 수도 있습니다. ./configure실행하려면 확인하세요 .--enable-fb

답변4

libaa를 사용해 볼 수 있습니다. ASCII Art는 꽤 훌륭하지만 대형 화면에서도 세부 사항을 보려면 확대/축소가 필요할 수 있습니다. 디스플레이 애플리케이션을 aview라고 부르지만 .pnm과 같은 p?m 시리즈 형식만 읽을 수 있습니다. Imagemagick의 변환 유틸리티를 빠르게 실행하면 이 문제가 해결됩니다. 자세한 내용은 아래를 참조하세요. 일부 배포판에는 libaa 및 유틸리티가 함께 제공됩니다. libaa의 기능을 보여주는 갤러리가 있습니다.

http://aa-project.sourceforge.net/aalib/

관련 정보