convert
de ImageMagick
Por exemplo, uma escala de cinza 2x3 de 8 bits:
printf '\x00\xFF\x88\xFF\x00\xFF' > f
Então:
convert -depth 8 -size 3x2+0 gray:f out.png
Explicação do comando:
-depth 8
: cada cor tem 8 bits
-size 2x3+0
: 2x3
imagem. +0
significa começar no deslocamento 0 no arquivo. Se houver cabeçalhos de metadados, você poderá ignorá-los com o deslocamento.
gray:f
: o arquivo de entrada é f
e o formato é gray
, conforme definido em http://www.imagemagick.org/script/formats.php Essa notação estranha é usada porque o ImageMagick geralmente determina o formato da extensão, mas aqui não há extensão .
O problema agora é como visualizar a saída. Um direto eog
:
eog out.png
não é muito bom porque a imagem é muito pequena e, se você aumentar muito o zoom, eog
usa um algoritmo de exibição que mistura pixels, o que é melhor para a maioria das fotos, mas não no nosso caso. Encontrei duas possibilidades:
gimp out.png
. Os editores de imagens devem mostrar cada pixel.
convert out.png -scale 300x200 out2.png
. -scale
é necessário em vez de -resize
, pois -resize
mistura pixels de maneira semelhante eog
à padrão.
Resultado:
Exemplo de RGB:
printf '\xFF\x00\x00\x00\xFF\x00\x00\x00\xFF' > f
convert -depth 8 -size 3x1+0 rgb:f out.png
Testado no Ubuntu 16.04, ImageMagick 6.8.9.