Реализована программа, которая выполняет команды:
- crop-rotate вырезает прямоугольник из BMP-файла с изображением, поворачивает этот прямоугольник на 90 градусов по часовой стрелке и сохраняет результат в отдельный файл;
- insert сохраняет в изображение сообщение (стенография);
- extract извлекает из изображения сообщение (стенография).
- Общий формат — BMP.
- В рамках формата BMP используется формат DIB с заголовком
BITMAPINFOHEADER
(версия 3). - Значение поля
biHeight
(высота изображения) строго больше нуля. - Используются 24 бита цвета на пиксель (один байт на цветовой канал).
- Палитра (таблица цветов) не используется.
- Сжатие не используется.
Исходное сообщение состоит только из заглавных латинских букв, пробела, точки и запятой.
Каждый символ преобразовывается в число от 0 до 28, соответственно (всего 29 различных значений),
а число — в пять бит, записанных от младших к старшим.
Всего сообщение из N
символов кодируется при помощи 5N
Бит.
- Программа проверяет корректность аргументов.
- При проблемах с аргументами, открытием файла, выделением памяти и прочим, программа должна корректно завершить работу и вернуть ненулевой код возврата.
Приложение запускается следующей командой:
./hw_01 crop-rotate ‹in-bmp› ‹out-bmp› ‹x› ‹y› ‹w› ‹h›
Используемые параметры:
crop-rotate
— обязательный параметр, означающий выполняемое действие.in-bmp
— имя входного файла с изображением.out-bmp
— имя выходного файла с изображением.x
,y
— координаты левого верхнего угла области, которую необходимо вырезать и повернуть. Координаты начинаются с нуля, таким образом (0, 0) — это верхний левый угол.w
,h
— соотвественно, ширина и высота области до поворота.
Таким образом, если обозначить ширину и высоту исходного изображения за W
и H
, соответственно, верны следующие неравенства:
0 <= x < x + w <= W
0 <= y < y + h <= H
Для сохранения секретной строчки в изображение приложение запускается следующей командой:
./hw_01 insert ‹in-bmp› ‹out-bmp› ‹key-txt› ‹msg-txt›
Для извлечения секретной строчки из изображения приложение запускается следующей командой:
./hw_01 extract ‹in-bmp› ‹key-txt› ‹msg-txt›
Используемые параметры:
in-bmp
— имя входного файла с изображением.out-bmp
— имя выходного файла с изображением.key-txt
— тестовый файл с ключом.msg-txt
— текстовый файл с секретным сообщением.