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

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


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

  1. (1) Рисование квадрата. Флаг для выполнения данной операции: –square. Квадрат определяется:
    1. Координатами левого верхнего угла. Флаг –left_up, значение задаётся в формате left.up, где left – координата по x, up – координата по y
    2. Размером стороны. Флаг –side_size. На вход принимает число больше 0
    3. Толщиной линий. Флаг –thickness. На вход принимает число больше 0
    4. Цветом линий. Флаг –color (цвет задаётся строкой rrr.ggg.bbb, где rrr/ggg/bbb – числа, задающие цветовую компоненту. пример –color 255.0.0 задаёт красный цвет)
    5. Может быть залит или нет. Флаг –fill. Работает как бинарное значение: флага нет – false , флаг есть – true.
    6. Цветом которым он залит, если пользователем выбран залитый. Флаг –fill_color (работает аналогично флагу –color)
  2. (2) Поменять местами 4 куска области. Флаг для выполнения данной операции: –exchange. Выбранная пользователем прямоугольная область делится на 4 части и эти части меняются местами. функциональность определяется:
    1. Координатами левого верхнего угла области. Флаг –left_up, значение задаётся в формате left.up, где left – координата по x, up – координата по y
    2. Координатами правого нижнего угла области. Флаг –right_down, значение задаётся в формате right.down, где right – координата по x, down – координата по y
    3. Способом обмена частей: “по кругу”, по диагонали. Флаг –exchange_type, возможные значения: clockwise, counterclockwise, diagonals
    4. Особенность работы системы: Координаты используются по принципу [left_up, right_down). При нечетной длине размер берется как 2 целой части деления на пополам. Пример – left_up = 96.112, right_down = 299.175 → 175 - 112 = 63 → 63 / / 2 = 31 → 2 * 31 = 62 строки будет изменено → по вертикали меняются строки 112..173 , а не 112..175
  3. (3) Находит самый часто встречаемый цвет и заменяет его на другой заданный цвет. Флаг для выполнения данной операции: –freq_color. функциональность определяется:
    1. Цветом, в который надо перекрасить самый часто встречаемый цвет. Флаг –color (цвет задаётся строкой rrr.ggg.bbb, где rrr/ggg/bbb – числа, задающие цветовую компоненту. пример –color 255.0.0 задаёт красный цвет)