使用 Mini Jpeg 解码器逐像素处理 JPEG 图像

发布于 2024-11-13 22:02:39 字数 520 浏览 5 评论 0原文

我想使用解码器使用 C++ 操作 JPEG 图像 Mini Jpeg解码器

问题是:我想逐个读取像素,但解码器仅返回一个 imageData 数组,类似于 libjpeg 可以。

我无法创建这样的方法:

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

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

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

我该如何解决这个问题?

I want to manipulate JPEG images with C++ using the decoder Mini Jpeg Decoder.

The problem is: I want to read pixel per pixel, but the decoder only returns an imageData-array, similar as libjpeg does.

I can't make a method like this:

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

The return (the char variable) should contain the luminance of the pixel.

(I work with grayscale images...)

How can I solve this problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

两仪 2024-11-20 22:02:39

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

我不确定像素布局,所以也许数组访问不正确。此外,这仅适用于灰度图像,否则您将仅获得该位置的红色值的亮度。华泰

As far as I can tell, the Decoder class delivers a byte array of color values with the GetImage() method. So you could write a function that looks like this:

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()];
}

I'm uncertain of the pixel layout, so maybe the array access is not right. Also this only works for grey-scale images, or else you would get the luminance of the Red color value at the position only. HTH

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文