我需要在我的应用程序中加载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++;
}
}
此代码有问题吗?
答案 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];