convert от ImageMagick
Например, 8-битная 2x3 шкала серого:
printf '\x00\xFF\x88\xFF\x00\xFF' > f
Потом:
convert -depth 8 -size 3x2+0 gray:f out.png
Объяснение команды:
-depth 8: каждый цвет имеет 8 бит
-size 2x3+0: 2x3изображение. +0означает начало со смещения 0 в файле. Если есть заголовки метаданных, вы можете пропустить их со смещением.
gray:f: входной файл f, и формат gray, как определено в http://www.imagemagick.org/script/formats.php Эта странная нотация используется, потому что ImageMagick обычно определяет формат из расширения, но здесь нет расширения ,
Теперь проблема в том, как просмотреть вывод. Прямой eog:
eog out.png
не очень хорошо, потому что изображение слишком маленькое, и при большом увеличении eogиспользуется алгоритм отображения, который смешивает пиксели, что лучше для большинства изображений, но не в нашем случае. Я нашел две возможности:
gimp out.png, Редакторы изображений должны показывать каждый пиксель.
convert out.png -scale 300x200 out2.png, -scaleвместо того -resize, чтобы -resizeсмешивать пиксели, как eogпо умолчанию.
Вывод:

Пример RGB:
printf '\xFF\x00\x00\x00\xFF\x00\x00\x00\xFF' > f
convert -depth 8 -size 3x1+0 rgb:f out.png

Протестировано на Ubuntu 16.04, ImageMagick 6.8.9.