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.