МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


Как цель узнает о ваших желаниях прежде, чем вы начнете действовать. Как компании прогнозируют привычки и манипулируют ими


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


Дифференциальные уравнения второго порядка (модель рынка с прогнозируемыми ценами) Дифференциальные уравнения второго порядка (модель рынка с прогнозируемыми ценами) - В простых моделях рынка спрос и предложение обычно полагают зависящими только от текущей цены на товар.

Описание структуры файла BMP





Содержание

Задание. 3

Описание структуры файла BMP. 5

Описание структуры класса Image. 5

Описание всех используемых структур, переменных и методов класса Image. 6

Алгоритм масштабирования изображений. 8

Результаты масштабирования и изменения глубины цвета. 10

Листинг кода программы.. 12

Задание.

Часть1.

Вариант № 6: Двумерный массив и RGBTRIPLE.

1. Создать класс Image, содержащий информацию об изображении. Все используемые изображения должны быть беспалитровые несжатые. Глубина цвета 24 или 32 бит. Структура, в которой хранятся данные изображения может быть RGBQUAD или RGBTRIPLE взависимости от варианта.

2. Для хранения используется либо одномерный, либо двумерный массив в зависимости от варианта.

3. Реализовать считывание данных изображения из файла в виде конструктора и метода класса: Image (char *fileName) и int loadimage(char *fileName). Функции должны выполнять следующие операции:

- Считывание и хранение заголовка файла внутри функции

- Считывание и сохранение заголовка изображения в данных объекта. Версии заголовка BITMAPV4HEADER и BITMAPV5HEADER не рассматриваются.

- Выделение памяти под массив данных изображения, на который указывает Rgbtriple,

- Последовательное считывание данных изображения (RGBTRIPLE) или (RGBQUAD), в зависимости от BITMAPINFOHEADER.BitCount. Данные RGBTRIP (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 ().

Часть 2.

Вариант № 6: 4 и 8 бит.

1. Реализовать перегрузку оператора Image operator /= (Image InpImage), осуществляющего масштабирование изображений.

2. Добавить в методы возможность считывания, создания и записи палитровых изображений. Дополняются все методы кроме контсруктора без параметров Image (). Глубина цвета выбирается в зависимости от варианта задания.

3. Реализовать перегрузку оператора Image operator / (short Depth), осуществляющего изменение глубины цвета.

Описание структуры файла BMP

BMP-файлы состоят из следующих частей:

- Заголовок файла. Содержит информацию о типе, размере и макете

файла, который содержит изображение (структура BITMAPFILEHEADER)..

- Заголовок изображения. Содержит информацию об изображении

аппаратно-независимого растрового формата (структура BITMAPINFOHEADER).

- Палитра (массив структур RGBQUAD). Палитра присутствует только в BMP-файлах, содержащих палитровые изображения (с глубиной пикселей 8 бит и менее)

- графические данные (массив структур RGBTRIPL). Графические данные — это и есть само изображение.





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.