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
-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.