Existe um visualizador de imagens que captura imagens no STDIN?


33

Estou procurando um visualizador de imagens que leve dados stdine possa ser executado como:

cat image.png | imageviewer

Respostas:


40

O displayprograma do ImageMagick fará exatamente isso, assumindo que você faça algo que ele entenda.

cat image.png | display

e aparecerá uma janela mostrando essa imagem.


1
Na versão ImageMagick 6.8.8-1 Q16 i686 2014-01-04eu preciso também passar -como parâmetro: $ cat image.png | display -ou $ display - < image.png.
Emil Lundberg


7

No Linux (e provavelmente BSDs), quase todos eles - se você der /dev/stdino caminho. Isto inclui: xloadimage, feh, Olho do GNOME ( eog).

eog /dev/stdin < "$file"

(Porém, nem todos eles funcionam bem com arquivos especiais. GThumb falhou no teste, por exemplo.)


3
Isso não funciona: cat graph.png | Eog / dev / stdin
bukzor,

5
@ Naga: O < "$file"foi um exemplo. A questão era se o programa pode aceitar um fluxo arbitrário, seja um redirecionamento simples ou algo mais avançado (como fornecer uma imagem via stdin, um pipe nomeado, substituição de processo, um soquete ou um dispositivo de caractere). O problema é que muitos visualizadores exigem que o fd seja procurado, o que somente são arquivos comuns e dispositivos de bloco.
grawity

3
Como @bukzor apontou, cat graph.png | eog /dev/stdinfalha, mas eog /dev/stdin < graph.pngfunciona.
Denilson Sá Maia

2
Existe alguma maneira de fazer esse método funcionar com piping ( |) também?
Tarrasch

1
Parece que eogestá pesquisando informações sobre o descritor de arquivo (que é bem-sucedido no caso especial de que ele foi redirecionado diretamente de um arquivo), enquanto os programas Unix normais apenas recebem a entrada, independentemente de onde ela é. Portanto eog, não funcionará para o stdin geral. Outro programa que funciona é gwenview /dev/stdin(o visualizador de imagens do KDE).
Caracol mecânico

3

Um FIFO poderia trabalhar com eoga falta de suporte de tubulação:

mkfifo ${tmpfilename};
cat ${file} > ${tmpfilename} &;
eog /dev/stdin < ${tmpfilename};
rm ${tmpfilename};

AFAIK isso deve funcionar.


3

Você pode usar feh, é bem rápido.

cat image.png | feh --scale-down -  

feh é um visualizador de imagens leve, que está nos repositórios padrão de muitas distribuições Linux. Destina-se especialmente a usuários de linha de comando que precisam de um visualizador de imagens rápido, sem grandes dependências da GUI.


2
Você pode expandir um pouco sua resposta? Apenas mencionar um produto (isso é um comando, produto ou uma expressão de indiferença?) Não explica realmente como realizar a solução. É melhor explicar como usar o produto para resolver o problema ou, pelo menos, descrever o que faz do produto uma boa solução, não apenas um hit aleatório do Google. Boas orientações sobre a recomendação de software aqui: meta.superuser.com/questions/5329/… . Obrigado.
precisa saber é o seguinte

1
A pergunta é muito específica, eu dei uma resposta específica. E, pelo amor de Deus, há uma linha de comando logo acima de nós.
MaikoID
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.