Блок задач

4. Структуры данных

Темы
Сложность 4

Задача «Поворот и отражение изображения»

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

Входные данные

BMP-файл с исходным изображением.

Задача

Написать программу, которая умеет осуществлять:

  1. Поворот изображения на 90, 180, 270 градусов
  2. Отражение изображения по горизонтали и вертикали

Для работы с форматом BMP использовать одну из header-only библиотек.

Выходные данные

BMP-файл с обработанным изображением.

Передачу имени входного файла реализовать через аргументы командной строки.

Тестирование

Реализовать программу, которая для заданного изображения делает все возможные преобразования и сохраняет их в различные файлы. Например, для входного image.bmp она должна сгенерировать:

  • image_90.bmp
  • image_180.bmp
  • image_270.bmp
  • image_h.bmp
  • image_v.bmp

Тестирование

Необходимо написать полноценный набор тестов.

Функции ввода/вывода нужно тестировать с помощью std::stringstream. Тестировать работу с изображениями нужно путем самостоятельной генерации изображений, без использования файлов.