Reply to comment

Обзор API (C++)

Обзор LibRaw API (C++)

Общие положения

  1. Вся обработка ведется экземпляром класса LibRaw - обработчиком изображений.
  2. Один обработчик изображений одновременно может обрабатывать только один исходный файл, последовательно - сколько угодно файлов.
  3. В программе (например, в разных threads) могут одновременно работать несколько обработчиков, хотя следует учитывать, что потребление памяти в обработчике может быть значительным.
  4. Чтение исходных данных RAW-файла практически не требует настроек (об исключениях сказано в API Notes).
  5. Все данные, извлеченные из RAW-файла доступны через поля данных обработчика (экземпляра класса LibRaw).
  6. Несмотря на то, что LibRaw не предназначена для постобработки RAW-данных, в библиотеку включены вызовы, позволяющие полностью воспроизвести поведение утилиты dcraw.
  7. Все настройки обработки производятся через поля данных класса 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 < 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();
}

Reply

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.
  • Images can be added to this post.

More information about formatting options