本帖最后由 bistu6 于 2011-06-13 12:07:41 编辑

解决方案 »

  1.   

                fwrite(&bufdata[i], 1, 1, fp_pgm);
                fwrite(&hi_zero, 1, 1, fp_pgm);
    这两句,你虽然一共写了2个字节的数据,但是实际只有bufdata[i]的8bit是有效的,hi_zero的8bit都是0,根本就不是12bit。如果是12bit的数据,在你的bufdata里面是怎么存的?
      

  2.   


    多谢回复可能我没说的太明白,bufdata里面的数据是8bit的灰度值,是从bmp图像中提取的rgb值再bayer格式化。我的问题是:可不可以将8bit/像素的灰度值存成12bit/像素的文件呢?
      

  3.   

    你是想没8bit扩展4个bit的0出来?你之前的代码扩展了8个bit的0出来,扩展成16bit的了。你把2个字节扩展成3个字节就行了,8bit4bit8bit4bit这样,利用移位和或、与操作。