当使用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 |
有人知道我的解释错误,或者需要设置不同以获得此结果吗? 谢谢!