帮我参考参考这个16位图像转化为JPG文件格式的代码,哪里搞错了?不好。
其中Bmplpdata是指向16位纯图像指针,是BYTE,大小:352*288*2
JPEGdata是定义的24位图指针,用于准备存储成JPG格式的文件,大小:352*288*3
for(int i=0;i<288;i++) //这个是高循环
{
for(int j=0;j<352;j++)//这里是宽循环
{
WORD S=*(Bmplpdata++);//顺序取出第一个字节
WORD X=*(Bmplpdata++);//顺序取出第二个字节
WORD Z=(S<<8)|(X);//16位中2字节表示一个像素,这里是双字节换算
//用的是rgb555格式,以下三句分别取出rgb颜色值,付给BYTE变量
BYTE bt0=(Z&0x7C00)>>10;
BYTE bt1=(Z&0x3E0)>>5;
BYTE bt2=(Z&0x1F);
//循环付给JPEGdata指针,
*(JPEGdata+i*352*3+j*3+0)=bt0;
*(JPEGdata+i*352*3+j*3+1)=bt1;
*(JPEGdata+i*352*3+j*3+2)=bt2;
}
}
RGBtoJPEGFile(JPEGdata,352,288,"aa.jpg");//jpeg.lib库中的函数
执行没什么问题,就是程序最后存成的jpg图像是黑色的,没有图像信息,我想是不是颜色值换算错了?问题是不是在这:WORD Z=(S<<8)|(X);
??