Como exibir imagens sem iniciar o X11?


28

Eu posso ver vídeos usando o OMXPlayer:

omxplayer -o hdmi video.h264

Como faço o mesmo para imagens estáticas?

Respostas:


34

Você pode usar o fbiaplicativo de linha de comando ("exibição de imagem do framebuffer"). O framebuffer também é o que oxmplayerusa. O Fbi está disponível nos repositórios raspbian e deve estar em qualquer outra distribuição GNU / Linux; não é específico para o pi.

É necessário um nome de arquivo ou uma série de nomes de arquivos e você pode usar shell globbing para isso, por exemplo:

fbi *.jpg

Irá mostrar todos os arquivos .jpg em seu diretório atual. Para obter instruções sobre como avançar de uma foto na lista para a próxima, consulte a seção CHAVES de man fbi. Você também pode definir uma apresentação de slides automatizada com a -topção

Você pode receber este erro:

ioctl VT_GETSTATE: Invalid argument (not a linux console?)

Mesmo quando conectado a um VT. A solução é especificar o dispositivo framebuffer, que deve ser:

fbi -d /dev/fb0 [...]

Se você estiver usando ssh, tente:

fbi -T 1 [...]

Onde "1" é o número do seu VT atual ("terminal virtual", também conhecido como VC, "console virtual"; esses são acessados ​​via ctrl-alt-F[1-6]). Você não precisa fazer o login no VT onde a imagem será exibida. Portanto, é possível fazer login remotamente e usá-lo para colocar imagens em um monitor anexado ao pi (presumindo que o VT correto esteja na tela). -Tnão está na página do manual, mas está listada com fbi --help.

Observe que você não pode usá-lo para visualizar a imagem em um terminal remoto; aqueles não estão associados ao buffer de moldura.

Existem algumas outras opções úteis -a, que ampliarão as imagens para caberem na tela se elas forem muito grandes e --editpermitirão que você gire imagens (acredito que elas serão salvas com essa rotação, verifique se apresenta um problema).


Obrigado. Eu tentei, fbi -d /dev/fb0 photo.jpgmas ainda recebo o erro que você mencionou. Estou logado no Pi via SSH no emulador de terminal Konsole do Kubuntu Linux. Você tem alguma idéia de como corrigir isso?
dotancohen

1
Você está certo - na verdade, o intuituve -d /dev/tty1também não funciona, mas alguns estudos revelados -T 1 (abertos via VT1) que não estão documentados na página do manual: / Então tente isso (presumindo que seja o primeiro VT que você vê na tela) ); Vou editar algo acima e deixe-me saber aqui se funcionou.
goldilocks

Obrigado. Curiosamente, eu pesquisei no Google, mas não encontrei a -T 1bandeira. Embora o uso do comando impeça a not a linux console?mensagem, nenhuma imagem aparece! Examinar a manpágina descobre: ​​"o fbi também precisa de acesso ao console linux (isto é, / dev / ttyN) para lidar com os comutadores de console sãos. Isso obviamente não é problema para logins do console, mas qualquer tipo de pseudo-tty (xterm, ssh, screen , ...) não funciona." Mesmo desistir tmuxnão ajudou. Você diz que conseguiu exibir imagens via SSH sem o X?
dotancohen

Não, você não pode visualizar o buffer de quadro remotamente, apenas pode controlá-lo.
goldilocks

8

Trabalhando cmdline para mim (desta forma, mostro uma imagem no monitor HDMI enquanto conectado ao Rpi pelo ssh):

sudo fbi -T 2 img.jpg

isso funciona perfeitamente quando eu uso um mini monitor externo conectado via s-video.
datayeah

0

Sudo fbi -T -device / dev / fb0 -a img.jpg

Funciona para mim, mas não há controle de chave ..


1
Essa resposta precisa de um pouco mais de detalhes. Deve, pelo menos, abordar a questão de saber se isso funciona com logons que não são do console - como descrito acima.
27613 Steve Robillard

@SteveRobillard, por que não deveria funcionar com logons que não são do console? existe apenas um framebuffer, não importa de onde você faça logon ... #
277

Pode funcionar bem, mas não aborda explicitamente os problemas discutidos nos comentários acima. Também ajudaria a esclarecer se o controle de teclas é possível.
27513 Steve Steve Robillard

0

Quando eu estava tentando escrever em um spi framebuffer sem o VT conectado, aparece como / dev / fb2

http://www.hardkernel.com/main/products/prdt_info.php?g_code=G142060963922

fbi -T 1 -d /dev/fb2 -noverbose my.jpg

Eu descobri que precisava usar -T 1 para fornecer um VT ao fbi, não parece importar qual deles

-noverbose foi porque eu não quero que o texto seja exibido

Eu estava executando esse comando no X11, que teve o efeito colateral de substituir temporariamente o buffer do X11, mas o op e eu não estaremos executando o X11, não é um problema, eu estava testando o dispositivo fb por enquanto

Eu realmente não me importo com controle, apenas ligo para o fbi novamente quando quero mostrar a próxima imagem

Eu estava em um odroid C1 com o openSUSE, mas isso não deveria importar


0

Eu descobri que 'sudo fbi -vt' funciona.

Você precisa chamar 'sudo' para executar o fbi, para poder acessar o console virtual real no qual a 'tela' está sendo executada. (E espero que você ainda não esteja executando como root ..!): D

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.