Cтруктура хранения bmp файлов - lanit-tercom-school/grouplock GitHub Wiki
BMP-файлы
Структура bmp-файла:
Заголовок
Смещение | Длина поля | Описание поля |
---|---|---|
0 | 2 | Код 4D42h — Буквы 'BM' |
2 | 4 | Размер файла в байтах |
6 | 2 | 0 (Резервное поле) |
8 | 2 | 0 (Резервное поле) |
10 | 4 | Начинается изображение |
Заголовок BITMAP (Информация об изображении)
Смещение | Длина поля | Описание поля |
---|---|---|
14 | 4 | Размер заголовка BITMAP в байтах (40) |
18 | 4 | Ширина изображения в пикселях |
22 | 4 | Высота изображения в пикселях |
26 | 2 | Число плоскостей (не используется) = 1 |
28 | 2 | Бит/пиксель* |
30 | 4 | Тип сжатия (обычно не используется) |
34 | 4 | Размер сжатого изображения в байтах |
38 | 4 | Горизонтальное расширение, пиксель/м |
42 | 4 | Вертикальное расширение, пиксель/м |
46 | 4 | Кол-во используемых цветов (очень редко) |
50 | 4 | Кол-во "важных"цветов (не используется) |
Палитра (Карта цветов для N цветов)**
Смещение | Длина поля | Описание поля |
---|---|---|
54 | 4*N | Палитра |
-
- Изображение при глубине 1 бит/пиксель может иметь всего два цвета, а при глубине 24 бит/пиксель - более 16 млн. различных цветов. Microsoft предлагает битности 1, 2, 4, 8, 16, 24, 32, 48 и 64. В битностях 8 и ниже цвет пикселя указывается индексом в таблице цветов (палитре), в высших: непосредственным значением в цветовой модели RGB.
- **(может отсутствовать) – массив, описывающий цвета, используемые в изображении. Только для BMP с глубиной не выше 8 бит/пиксель.
После палитры находятся данные изображения, которое по строкам растра записано снизу вверх, а внутри строки — слева направо. Так как на некоторых платформах невозможно считать единицу данных, которая меньше 4 байт, длина каждой строки выровнена на границу в 4 байта, т.е. при длине строки, не кратной четырем, она дополняется от 1 до 3 пустыми нулевыми байтами.
Смещение | Формула на C |
---|---|
8 | (3*Width)%4 |
16 | (2*Width)%4 |
24 | Width%4 |
24-битный цвет обычно состоит из трёх каналов: красный, зелёный, синий: RGB (Red, Green, Blue).
32-битный цвет обычно состоит из четырёх каналов: альфа (прозрачность), красный, зелёный, синий: ARGB (Alpha, Red, Green, Blue).
Особенности при шифровании: При шифровании bmp-файлов информацию о том, зашифрован файл или нет, можно хранить следующим образом:
- В заголовке файла;
- В RGB-матрице при кодировании не заменять последние биты битами новой картинки у первого элемента матрицы, а ввести флаг, по которому и определять, закодированное или нет.
Способы шифрования:
1.Визуальная криптография
2.Схема разделения секретной визуальной информации
3.Шифрование RGB изображения с помощью Фурье-образа
Литература:
Прячем текст в Bitmap http://habrahabr.ru/post/115673/
Визуальная криптография для цветных изображений http://habrahabr.ru/post/121878/
Существующие программы для шифрования bmp:http://gold-free.ru/soft/graph/coding.php
Ссылка на источник: https://ru.wikipedia.org/wiki/BMP