Войти
X-Time CommunityСтатьи

dpImage Decoder - пример использования

Автор:

Задача проста: прочитать изображение из dpi-файла.

Шаг 1: Подключаем dpIDecoder и регистрируем класс

#include <dpIDecoder.h>
#pragma comment(lib,"dpIDecoder.lib");
CDPIDECODER dpi;

Шаг 2: Открываем файл, читаем заголовок, считываем данные и декодируем изображение.

if(dpi.OpenFile("myimage.dpi")!=DPIDECODER_ERROR_OK){...}
if(dpi.ReadHeader()!=DPIDECODER_ERROR_OK){dpi.CloseFile();...}
if(dpi.ReadData()!=DPIDECODER_ERROR_OK){dpi.CloseFile();...}
if(dpi.DecompressImage()!=DPIDECODER_ERROR_OK){dpi.CloseFile();...}
dpi.CloseFile();

И так. Теперь у нас есть декодированное изображение, которое готово к использованию. На данном этапе важно просто знать, каким образом сформированны данные. Для этого делаем следующее:

Выясняем глубину цвета

int bpp=(dpi.dpIhdr.ColorTheme.bpp==24)?24:32;

Здесь все просто. dpi-формат на сегодняшний день может быть только 24- или 32-х битным изображением, так что достаточно проверить, например, является ли изображение 24-битным, и, если да, то bpp=24, а иначе - 32.

Формируем нужную раскладку цветовых компанентов

Предположим, что нам нужно из того изображения, что есть, создать HBITMAP. Тогда нам необходимо, чтобы цвета шли в порядке "синий-зеленый-красный". Для этого делаем перепаковку:

dpi.ChangeColorTheme(dpi.dpIhdr.ColorTheme.theme,DPICOLORTHEME_BGRA);

Теперь у нас нужная раскладка. Изображение полностью готово к использованию в наших целях!

Теперь осталось только его взять и использовать по назначению. Все, что нам нужно знать - это:

1. Размеры изображения. Их получаем отсюда: dpi.dpIhdr.Resolution.Width и dpi.dpIhdr.Resolution.Height - ширина и высота, соотв.

2. Само изображение лежит тут: dpi.pImage

Всё.
Всем приятного использования dpImage!

23 ноября 2008