[вернуться к оглавлению]
Обзор LibRaw API (C++)
Общие положения
- Вся обработка ведется экземпляром класса LibRaw - обработчиком изображений.
- Один обработчик изображений одновременно может обрабатывать только один исходный файл, последовательно -
сколько угодно файлов.
- В программе (например, в разных threads) могут одновременно работать несколько обработчиков, хотя следует
учитывать, что потребление памяти в обработчике может быть значительным.
- Чтение исходных данных RAW-файла практически не требует настроек (об исключениях сказано в API Notes).
- Все данные, извлеченные из RAW-файла доступны через поля данных обработчика (экземпляра класса LibRaw).
- Несмотря на то, что LibRaw не предназначена для постобработки RAW-данных, в библиотеку включены
вызовы, позволяющие полностью воспроизвести поведение утилиты dcraw.
- Все настройки обработки производятся через поля данных класса LibRaw.
Краткая демонстрация
Пример ниже не содержит какой-либо обработки ошибок в целях компактности демонстрации
#include "libraw/libraw.h"
int process_image(char *file)
{
// Cоздадим обработчик изображений
LibRaw iProcessor;
// Открыть файл и считать метаданные
iProcessor.open_file(file);
// Метаданные доступны в полях данных класса
printf("Image size: %d x %d\n",iProcessor.imgdata.sizes.width,iProcessor.imgdata.sizes.height);
// Распакуем изображение
iProcessor.unpack();
// И напечатаем его дамп, данные доступны в полях данных класса
for(i = 0;i lt; iProcessor.imgdata.sizes.iwidth * iProcessor.imgdata.sizes.iheight; i++)
printf("i=%d R=%d G=%d B=%d G2=%d\n",
i,
iProcessor.imgdata.image[i][0],
iProcessor.imgdata.image[i][1],
iProcessor.imgdata.image[i][2],
iProcessor.imgdata.image[i][3]
);
// Освободим процессор для работы со следующим изображением
iProcessor.recycle();
}
[вернуться к оглавлению]
LibRaw Team
Last modified: Mon May 4 22:11:53 MSD 2009