Какое программное обеспечение может отображать сырые битмапы на Linux?

Вопрос или проблема

У меня есть сырой файл, но я не знаю, какой формат пикселей или ширину изображения. Мне нужен инструмент, который может быстро отобразить данные и позволить мне легко попробовать разные форматы. Примером такого инструмента для Windows будет 7yuv. Какое программное обеспечение существует для этой задачи на Linux?

Примечание: Это не имеет ничего общего с сырыми данными цифровых камер, что раздражает мои попытки использовать Google для ответа на этот вопрос.

7yuv

Оказывается, Gimp может это сделать. Просто откройте файл как сырой, и вы получите этот полезный диалог, который позволяет вам просмотреть изображение:

вставьте описание изображения здесь

convert из ImageMagick

Например, 8-битный 2×3 градации серого:

printf '\x00\xFF\x88\xFF\x00\xFF' > in.bin

Затем:

convert -depth 8 -size 3x2+0 gray:in.bin out.png

Выход (как только вы масштабируете его как-то, см. раздел ниже для деталей):

вставьте описание изображения здесь

Объяснение команды:

  • -depth 8: каждый цвет имеет 8 бит
  • -size 2x3+0: 2x3 изображение. +0 означает, что начинается с смещения 0 в файле. Если есть заголовки метаданных, вы можете пропустить их с помощью смещения.
  • gray:in.bin: входной файл это in.bin, а формат gray, как определено на http://www.imagemagick.org/script/formats.php. Эта странная нотация используется, потому что ImageMagick обычно определяет формат по расширению, но здесь расширения нет.

Как просматривать такие крошечные выводы, как в этом примере

Проблема сейчас в том, как точно просмотреть такой крошечный 3×2 вывод. Прямой eog:

eog out.png

не очень хорош, потому что изображение слишком маленькое, и если вы сильно увеличите, eog использует алгоритм отображения, который постоянно смешивает пиксели, что лучше для большинства картинок, но не для такого крошечного изображения.

Одной из хороших возможностей является выполнение:

convert out.png -scale 300x out2.png

или напрямую за один прием с:

convert -depth 8 -size 3x2+0 gray:in.bin -scale 300x out.png

-scale нужен вместо -resize, поскольку -resize смешивает цвета пикселей непрерывно, как и eog по умолчанию.

Другой вариант — просмотреть это в Gimp:

gimp out.png

Редакторы изображений, такие как Gimp, должны показывать каждый отдельный пиксель отдельно, если вы увеличите достаточно.

Пример RGB

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

или с -scale, чтобы сделать его более читаемым:

convert -depth 8 -size 3x1+0 rgb:in.bin -scale 300x out.png

вставьте описание изображения здесь

Связано:

Тестировалось на Ubuntu 16.04, ImageMagick 6.8.9.

этот фрагмент python делает это:

from PIL import Image
import numpy as np


raw_img = np.fromfile("image",  dtype=np.uint8)
l = int(np.sqrt(raw_img.shape[0]/4))  # для изображения в форме квадрата l x l
Image.frombytes(mode="RGBA", size=(l, l), data=raw_img).show()

Ответ или решение

Как отобразить сырые битмапы на Linux: инструментальный обзор

Если у вас есть файл в сыром формате, но вы не знаете, какой у него пиксельный формат или ширина изображения, существует несколько эффективных инструментов для отображения и анализа таких данных на Linux. Ниже представлена информация о нескольких подходах и возможностях программного обеспечения, которое может помочь вам в этой задаче.


1. GIMP

GIMP (GNU Image Manipulation Program) – это мощный редактор изображений, который поддерживает открытие файлов в сыром формате. Когда вы пытаетесь открыть такой файл, GIMP предоставляет вам диалоговое окно, в котором вы можете управлять настройками и форматами изображения, что позволяет легко просматривать данные:

  • Преимущества:

    • Пользовательский интерфейс для ввода параметров (ширина, высота, формат).
    • Возможность редактирования и манипуляции изображениями.
  • Недостатки:

    • Может быть избыточным для простых задач просмотра.

2. ImageMagick

ImageMagick – это мощный набор инструментов для создания, редактирования и преобразования изображений. Его утилита convert позволяет открывать и отображать сырой бинарный файл, задавая формат и размеры изображения.

Пример использования:

printf '\x00\xFF\x88\xFF\x00\xFF' > in.bin
convert -depth 8 -size 3x2+0 gray:in.bin out.png
  • Объяснение параметров:
    • -depth 8: Указывает, что каждый цвет имеет 8 бит.
    • -size 3x2+0: Определяет размер изображения 3×2 с начальным смещением 0 в файле.
    • gray:in.bin: Указывает формат входного файла как градации серого.

Как просмотреть миниатюрные изображения:

Для более постепенного и четкого просмотра изображений, особенно малых, можно использовать:

convert out.png -scale 300x out2.png

Или комбинировать команды:

convert -depth 8 -size 3x2+0 gray:in.bin -scale 300x out.png

3. Python с использованием Pillow

С помощью Python и библиотеки Pillow (PIL) вы также можете отображать сырые изображения. Этот метод позволяет писать скрипты для автоматизации процесса работы с изображениями.

from PIL import Image
import numpy as np

raw_img = np.fromfile("image", dtype=np.uint8)
l = int(np.sqrt(raw_img.shape[0] / 4))  # Предполагая квадратное изображение
Image.frombytes(mode="RGBA", size=(l, l), data=raw_img).show()
  • Преимущества:
    • Позволяет гибко управлять размером и форматом изображения с использованием кода.
    • Возможность легкой автоматизации и интеграции в более крупные проекты.

Заключение

На Linux существует множество инструментов для отображения сырых битмапов, каждый из которых имеет свои особенности и преимущества. GIMP, ImageMagick и Python с Pillow позволяют вам экспериментировать с различными форматами и быстро находить нужное изображение. Выбор инструмента будет зависеть от ваших предпочтений и потребностей. Используйте предоставленные примеры, чтобы начать работу, и адаптируйте их в зависимости от ваших требований.

Оцените материал
Добавить комментарий

Капча загружается...