convert de ImageMagick
Por ejemplo, una escala de grises 2x3 de 8 bits:
printf '\x00\xFF\x88\xFF\x00\xFF' > f
Luego:
convert -depth 8 -size 3x2+0 gray:f out.png
Explicación del comando:
-depth 8: cada color tiene 8 bits
-size 2x3+0: 2x3imagen. +0significa comenzar en el desplazamiento 0 en el archivo. Si hay encabezados de metadatos, puede omitirlos con el desplazamiento.
gray:f: el archivo de entrada es f, y el formato es gray, como se define en http://www.imagemagick.org/script/formats.php Esta notación extraña se usa porque ImageMagick generalmente determina el formato de la extensión, pero aquí no hay extensión .
El problema ahora es cómo ver la salida. Un directo eog:
eog out.png
no es muy bueno porque la imagen es demasiado pequeña, y si se eogacerca mucho, utiliza un algoritmo de visualización que mezcla píxeles, que es mejor para la mayoría de las imágenes, pero no en nuestro caso. Encontré dos posibilidades:
gimp out.png. Los editores de imágenes deben mostrar cada píxel.
convert out.png -scale 300x200 out2.png. -scalees necesario en lugar de hacerlo -resize, ya que los -resizepíxeles mixels se elevan de forma muy similar eoga la predeterminada
Salida:

Ejemplo RGB:
printf '\xFF\x00\x00\x00\xFF\x00\x00\x00\xFF' > f
convert -depth 8 -size 3x1+0 rgb:f out.png

Probado en Ubuntu 16.04, ImageMagick 6.8.9.