convertde ImageMagick puede hacerlo.
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 manera 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.
hdpara formatear. Luego pides ver una imagen. Si se trata de una imagen, tendrá un formato de imagen (como bmp) que, como mínimo, tendrá un encabezado que identifica el formato, el ancho, la altura, la profundidad de color y quizás también una paleta de colores. adjunto.