我觉得问题出现在这:
while (cinfo.output_scanline < cinfo.output_height)
{
jpeg_read_scanlines(&cinfo, buffer, 1);
fwrite(buffer,row_stride,1,fp);
}
一幅24位色深bmp位图的像素值大小应该是:width * height * 3
如果你的buffer是rgbquda的结构体那也应该是width与height 的双重循环
cinfo.output_scanline < cinfo.output_height 感觉就不够,故而还有很多像素没有被填充,都是初始值0,所以是黑色的!