Попиксельное управление изображениями JPEG с помощью Mini Jpeg Decoder

Я хочу обрабатывать изображения JPEG с помощью C++ с помощью декодера Mini Jpeg Декодер.

Проблема в следующем: я хочу считать пиксель за пикселем, но декодер возвращает только массив imageData, аналогичный libjpeg.

Я не могу создать такой метод:

char getPixel(char x, char y, unsigned char* imageData) 
{
    //...???
}

Возврат (переменная char) должен содержать яркость пикселя.

(Я работаю с изображениями в градациях серого...)

Как я могу решить эту проблему?


person cafaxo    schedule 04.06.2011    source источник


Ответы (1)


Насколько я могу судить, класс Decoder предоставляет байтовый массив значений цвета с помощью метода GetImage(). Таким образом, вы можете написать функцию, которая выглядит так:

char getLuminance(Decoder* dec, int x, int y) {
    if(x < 0 || y < 0 || x >= dec->GetWidth() || y >= dec->GetHeight()) {
        throw "out of bounds";
    }

    return dec->GetImage()[x + y * dec->GetWidth()];
}

Я не уверен в расположении пикселей, поэтому, возможно, доступ к массиву неверен. Также это работает только для изображений в оттенках серого, иначе вы получите яркость значения красного цвета только в данной позиции. ХТН

person Constantinius    schedule 04.06.2011