Skip to content

VladimirKhmelev/bmp-on-C

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

Задача

Разработать две консольные утилиты: для конвертации BMP изображений в негатив и для попиксельного сравнения двух BMP изображений.

Реализовано

  • Написана библиотека bmp, которая состоит из необходимых для реализации утилит функций по работе с BMP изображениями (чтение, запись и т.д.), и на основе этой библиотеки сделаны две утилиты: converter и comparer.
    • Поддерживаются два формата BMP: 8bit и 24bit.
    • Поддерживается только BITMAPINFOHEADER с размером header’а 40 байтов.
  • Валидирован пользовательский ввод на предмет отсутствующих, лишних, или неверных аргументов. В случае ошибки выводится внятное и осмысленное сообщение в стандартный поток ошибок.
  • Код отлажен с помощью Address Sanitizer и Valgrind.

Converter

Утилита считывает изображение из файла, конвертирует его в негатив и записывает в другой файл. Преобразование 8bit изображений осуществляется путем инвертирования таблицы цветов, 24bit изображений – путем попиксельного инвертирования. Пути до входного и выходного файла передаются через аргументы командной строки.

converter input.bmp output.bmp

Коды возврата:

  • 0 — изображение успешно сконвертировано.
  • 1 — некорректные аргументы командной строки, неподдерживаемый формат, ошибки, которые относятся к структуре изображения и иные ошибки. В случае ошибки выводится сообщение в стандартный поток ошибок.

Comparer

Утилита считывает два изображения из файлов и производит попиксельное сравнение. Пути до файлов передаются через аргументы командной строки.

  • Если изображения попиксельно совпадают (Код возврата: 0), выводится сообщение Images are same в стандартный поток вывода.

  • Если изображения различны (Код возврата: 2), выводится в стандартный поток ошибок координаты первых 100 различающихся пикселей.

  • Если сравнение невозможно в принципе (Код возврата: 1), например, не совпадают длины или высоты, не совпадают форматы и т.д., то выводится сообщение в стандартный поток ошибок.

Специальные случаи:

  • Изображения, отличающиеся лишь порядком хранения пикселей, считаются совпадающими.
  • Изображения, отличающиеся лишь способом хранения цвета пикселей, считаются совпадающими.
  • Изображения разной битности всегда считаются несовпадающими.

Использование имеет следующий вид, вызов через командную строку:

comparer image1.bmp image2.bmp

Коды возврата:

  • 0 — изображения совпадают.
  • 1 — некорректные аргументы командной строки, изображения несравнимы, неподдерживаемый формат, ошибки, которые относятся к структуре изображения и иные ошибки. Также необходимо вывести внятное сообщение о случившейся ошибке в стандартный поток ошибок.
  • 2 — изображения не совпадают.
  • Других кодов возврата быть не должно.

About

C BMP tools – negative converter and pixel‑wise comparer for 8/24‑bit BMP images. Handles palette inversion, pixel‑wise difference reporting, and full error validation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages