Общие положения
- Вся обработка ведется экземпляром класса 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); // Метаданные доступны в <a href="API-datastruct-rus.html">полях данных класса</a> printf("Image size: %d x %d\n",iProcessor.imgdata.sizes.width,iProcessor.imgdata.sizes.height); // Распакуем изображение iProcessor.unpack(); // Преобразуем из iProcessor.rawdata... в iProcessor.image iProcessor.raw2image(); // И напечатаем его дамп, данные доступны в <a href="API-datastruct-rus.html">полях данных класса</a> 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(); }
Comments
Опечатка.
Вот тут:
В английской версии тоже.
Спасибо!
Спасибо!