Обработка формата BMP

Общие требования – представлены тут


Программа должна иметь следующую функции по обработке изображений:

  1. Поиск всех залитых прямоугольников заданного цвета. Флаг для выполнения данной операции: –filled_rects. Требуется найти все прямоугольники заданного цвета и обвести их линией. Функциональность определяется:
    1. Цветом искомых прямоугольников. Флаг –color (цвет задаётся строкой rrr.ggg.bbb, где rrr/ggg/bbb – числа, задающие цветовую компоненту. пример –color 255.0.0 задаёт красный цвет)
    2. Цветом линии для обводки. Флаг –border_color (работает аналогично флагу –color)
    3. Толщиной линии для обводки. Флаг –thickness. На вход принимает число больше 0
    4. Подсказка по алгоритму: Поиск прямоугольников выполняется построчным просмотром («сканированием») изображения с объединением одинаковых цветовых отрезков из соседних строк в прямоугольные области. Все найденные прямоугольники затем обводятся линией указанного цвета заданной толщины.
  2. Рисование окружности. Флаг для выполнения данной операции: –circle. Окружность определяется:
    1. координатами ее центра и радиусом. Флаги –center и –radius. Значение флаг –center задаётся в формате x.y, где x – координата по оси x, y – координата по оси y. Флаг –radius На вход принимает число больше 0
    2. толщиной линии окружности. Флаг –thickness. На вход принимает число больше 0
    3. цветом линии окружности. Флаг –color (цвет задаётся строкой rrr.ggg.bbb, где rrr/ggg/bbb – числа, задающие цветовую - компоненту. пример –color 255.0.0 задаёт красный цвет)
    4. окружность может быть залитой или нет. Флаг –fill. Работает как бинарное значение: флага нет – false , флаг есть – true.
    5. цветом которым залита сама окружность, если пользователем выбрана залитая окружность. Флаг –fill_color (работает аналогично флагу –color)
  3. Фильтр rgb-компонент. Флаг для выполнения данной операции: –rgbfilter. Этот инструмент должен позволять для всего - изображения либо установить в диапазоне от 0 до 255 значение заданной компоненты. Функциональность определяется
    1. Какую компоненту требуется изменить. Флаг –component_name. Возможные значения red, green и blue.
    2. В какой значение ее требуется изменить. Флаг –component_value. Принимает значение в виде числа от 0 до 255
  4. Разделяет изображение на N*M частей, а линии требуемой толщины должны рисоваться между ними. Расстояния между блоками - thickenss (то есть изображение будет расширено на количество линий по оси * толщину). При определении участка, в который будет использоваться крайний пиксель округление выполнять в соответствии с математическими правилами округления. Флаг для выполнения данной операции: –split. Реализация: провести линии заданной толщины. функциональность определяется:
    1. Количество частей по “оси” Y. Флаг –number_x. На вход принимает число больше 1
    2. Количество частей по “оси” X. Флаг –number_y. На вход принимает число больше 1
    3. Толщина линии. Флаг –thickness. На вход принимает число больше 0
    4. Цвет линии. Флаг –color (цвет задаётся строкой rrr.ggg.bbb, где rrr/ggg/bbb – числа, задающие цветовую компоненту. пример –color 255.0.0 задаёт красный цвет)