Reduza a saída do terminal para o arquivo de imagem

7

Eu preciso executar programaticamente alguns comandos unix e obter a saída em um arquivo de imagem, o formato pode ser png ou jpeg ( jpg ).

Os comandos são executados em uma máquina AIX (IBM * nix). Eu não tenho permissão para instalar novos pacotes, no entanto acho que há uma maneira de fazer isso usando um pipeline e redirecionamentos com os pacotes padrão do sistema operacional.

Infelizmente, não consegui encontrar um método para fazer isso.

    
por Fernando Martinez 20.06.2012 / 19:55

1 resposta

4

Para comandos com pouca saída e linhas curtas, você pode fazer isso facilmente com uma combinação de a2ps, ghostscript e imagemagick:

Aqui, a saída do comando ls é usada como exemplo.

ls | 
a2ps -=book -B -q --medium=A4dj --borders=no -o out1.ps &&
gs \
  -sDEVICE=png256           \
  -dNOPAUSE -dBATCH -dSAFER \
  -dTextAlphaBits=4 -q      \
  -r300x300                 \
  -sOutputFile=out2.png out1.ps
convert -trim out2.png result.png

a2ps cria uma imagem vetorial do texto. ghostscript rasteriza-lo em um gráfico PNG (não use JPEG, é o formato gráfico errado para isso, é útil apenas para imagens fotorrealistas). Finalmente imagemagick é usado para remover o espaço em branco circundante. Leia as man pages e ajuste os parâmetros conforme necessário.

Se os programas não estiverem instalados, você poderá compilá-los e instalá-los com --prefix=/home/me/.local como usuário sem direitos de administrador .

EDITAR: Como mencionado em um comentário, uma solução sem a dependência de a2ps e ghostscript é a seguinte.

convert label:"$(ls)" result.png
    
por 20.06.2012 / 20:23