libjpeg:jpeg_read_scanlines rsulting缓冲区内容澄清

时间:2015-05-07 09:54:29

标签: c++ libjpeg

当使用libjpeg读取图像线时,我正在使用jpeg_read_scanlines,如示例中所述。

该文档描述了,例如,具有3种颜色且宽度为100的图像中,必须具有300个无条件字符条目的缓冲区。 然后内容应该是第一个字节红色值,第二个字节绿色值,第三个字节蓝色值,然后重复下一个像素。

在我的代码中,我正在尝试"列出"每行的所有像素,但只获得第一项中的值,即使我的测试图像每行有10像素红色,10像素绿色,10像素蓝色等...

row_stride = jpginfo.output_width * jpginfo.output_components;
buffer = (*jpginfo.mem->alloc_sarray)
    ((j_common_ptr) &jpginfo, JPOOL_IMAGE, row_stride, 1);

for (j=0;j<jpginfo.output_height;j++)       
  {
   jpeg_read_scanlines(&jpginfo, buffer, 1);
   for (i=0;i<row_stride;i++)
      {printf("%d, %d: %X|", j, i, buffer[i]);
      };
 };

我的代码输出如下:

0,0:D4D860 | 0,1:0 | 0,2:0 | 0,3:0 | 0,4:0 | 0,5:0 | 0,6:0 | 0,7:0 | 0,8:0 | 0,9:0 | 0,10:0 | 0,11:0 | 0,12:0 | 0,13:0 | 0,14:0

我是否误解了缓冲区内容的内容? 我希望红色部分有以下内容:

0,0:255 | 0,1:0 | 0:2:0 | 0,3:255 | 0,4:0 | 0,5:0 |

当绿色开始时,10像素后:

0,10:0 | 0,11:255 | 0,12:0 | 0,13:0 | 0,14:255 | 0,15:0 |

有人知道我的解释错误,或者需要设置不同以获得此结果吗? 谢谢!

0 个答案:

没有答案