使用Mini Jpeg Decoder操纵JPEG图像像素/像素

时间:2011-06-04 19:04:44

标签: c++ image-manipulation libjpeg getpixel

我想使用解码器 Mini Jpeg Decoder 使用C ++处理JPEG图像。

问题是:我想读取每像素的像素数,但解码器只返回一个imageData数组,类似于 libjpeg

我无法制作这样的方法:

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

返回(char变量)应包含像素的亮度。

(我使用灰度图像......)

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

据我所知,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()];
}

我不确定像素布局,所以阵列访问可能不对。此外,这仅适用于灰度图像,否则您只能在该位置获得红色值的亮度。 HTH