Создан заказ №1330031
8 сентября 2016
С++
Как заказчик описал требования к работе:
Задание.
1. Создать класс Image, содержащий информацию об изображении. Все используемые изображения должны быть беспалитровые несжатые. Глубина цвета 24 или 32 бит. Структура, в которой хранятся данные изображения может быть RGBQUAD или RGBTRIPLE в зависимости от варианта.
2. Для хранения испол
ьзуется либо одномерный, либо двумерный массив в зависимости от варианта.
3. Реализовать считывание данных изображения из файла в виде конструктора и метода класса: Image (char *fileName) и int loadimage(char *fileName). Функции должны выполнять следующие операции:
Считывание и хранение заголовка файла внутри функции
Считывание и сохранение заголовка изображения в данных объекта. Версии заголовка BITMAPV4HEADER и BITMAPV5HEADER не рассматриваются.
Выделение памяти под массив данных изображения, на который указывает Rgbtriple, Последовательное считывание данных изображения (RGBTRIPLE) или (RGBQUAD), в зависимости от BITMAPINFOHEADER.BitCount. Данные RGBTRIPLE (RGBQUAD) приводятся после считывания к структуре, указанной в варианте.
В случае ошибки loadimage(char *filename) возвращает 0.
4. Реализовать создание объекта нового изображения конструктором: Image (char Mode, unsigned short BCount, int Width, int Height). Функция выполняет следующее:
Заполняет структуру BITMAPINFOHEADER в зависимости от входных параметров Width, Height. Поля вычисляются или задаются стандартным образом. Создаваемое изображение беспалитровое несжатое. Глубина цвета 24 или 32 бит.
Выделяет память под массив данных изображения, на который указывает Rgbtriple(или Rgbquad).
Записывает данных изображения в зависимости от параметра Mode.
5. Реализовать метод записи изображения в файл void writeimage(char *filename). Функция должна выполнять следующие операции:
Открытие файла filename для записи.
Вычисление полей и заполнение структуры BITMAPFILEHEADER. Запись структуры в файл.
Запись структуры BITMAPINFOHEADER в файл.
Запись данных изображения в файл построчно, начиная с нижней строки. В зависимости от BITMAPINFOHEADER.BitCount данные преобразуются к нужному типу.
Закрытие файла
6. Реализовать конструктор без параметров Image (), который не выделяет память под массив данных, все параметры изображения = NULL. Никакие операции кроме присваивания или загрузки изображения из файла с этим объектом выполняться не могут.
7. Реализовать конструктор копий Image (const Image &i) и перегрузку оператора “=” Image operator = (Image Inp), выделяющих память отдельно под копию, это необходимо так как при обычном копировании Rgbtriple(или Rgbquad) копии будет ссылаться на ту же область памяти, что и Rgbtriple(или Rgbquad) оригинала.
Помимо этого, при перегрузке оператора “=” надо учесть, что присваивание происходит лишь, если левый элемент пуст (это можно определить по BITMAPINFOHEADER.Size=0), в этом случае содержимое объекта копируется полностью. Или изображения имеют один и тот же формат, в этом случае копируются только данные изображения. После того как изображение создано, изменять его параметры (BITMAPINFOHEADER) нельзя.
8. Реализовать деструктор ~Image ().
Задание.
1. Реализовать перегрузку оператора Image operator /= (Image InpImage), осуществляющего масштабирование изображений.
2. Добавить в методы возможность считывания, создания и записи палитровых изображений. Дополняются все методы кроме контсруктора без параметров Image ().
Глубина цвета выбирается в зависимости от варианта задания.
3. Реализовать перегрузку оператора Image operator / (short Depth), осуществляющуего изменение глубины цвета.
Вариант задания можно выбрать любой (Файл прилагается)
подробнее
Заказчик
заплатил
заплатил
500 ₽
Заказчик не использовал рассрочку
Гарантия сервиса
Автор24
Автор24
20 дней
Заказчик воспользовался гарантией для внесения правок на основе комментариев преподавателя
11 сентября 2016
Заказ завершен, заказчик получил финальный файл с работой
5
С++.docx
2019-03-03 09:15
Последний отзыв студента о бирже Автор24
Общая оценка
4
Положительно
Хороший исполнитель, взялся за работу от которой 5 других отказались. Правда работа завершена не в срок и в пояснительной записке пришлось самому подкорректировать некоторые детали, поэтому 4/5.