使用libjpeg加载jpg文件时遇到问题

时间:2018-01-11 13:44:53

标签: libjpeg

我需要在我的应用程序中加载jpg文件。我使用libjpeg来保存JPG(来自已处理的原始文件)并且它运行良好。

阅读它们是一个不同的问题。我得到了非常奇怪的结果,图像非常扭曲,有12列,主要是灰度级。

我按照这个例子,我做的唯一修改是如何将数据放入我的缓冲区(示例中缺少put_scanline_someplace()函数。

这是我的相关代码(我需要BGR格式的数据):

dest=0;
while(cinfo.output_scanline < cinfo.output_height)
{
    jpeg_read_scanlines(&cinfo, buffer, 1);
    src=0;

    for(i=0;i<cinfo.output_width;i++)
    {
        image_buffer[dest*3+2]=buffer[src*3+0];
        image_buffer[dest*3+1]=buffer[src*3+1];
        image_buffer[dest*3+0]=buffer[src*3+2];
        src++;
        dest++;
    }
}

此代码有问题吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。 buffer是一个指向int数组的指针,所以有效的代码是这样的:

        image_buffer[dest*3+2]=buffer[0][src*3+0];
        image_buffer[dest*3+1]=buffer[0][src*3+1];
        image_buffer[dest*3+0]=buffer[0][src*3+2];