Управление пикселями JPEG-изображений с помощью Mini Jpeg Decoder - PullRequest
1 голос
/ 04 июня 2011

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

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

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

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

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

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

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

1 Ответ

0 голосов
/ 05 июня 2011

Насколько я могу судить, класс 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()];
}

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

...