CImage可否存为8bit的JPG图像
各位大侠:
最近遇见一个问题,我将相机拍摄的图像加上文件头后,通过转换为stream后,由CImage的load函数进行转换,再用其Save函数对图像进行压缩并存储。但现在出现一个问题:相机拍摄的图像是灰度图像,为8位的,但为什么压缩存储的图像却是24位的呢,有什么方法可以压缩图像存储为8bit呢。求教!!具体代码如下:
//创建数据流
HGLOBAL hGloabl = GlobalAlloc(GMEM_MOVEABLE, LENGTH_IMG_ALL + 10);
if (hGloabl == NULL)
{
return FALSE;
}
void *pData = GlobalLock(hGloabl);
IStream* pStream = NULL;
if (CreateStreamOnHGlobal(hGloabl,true, &pStream) != S_OK)
{
GlobalFree(hGloabl);
return FALSE;
}
if (pStream == NULL)
{
GlobalFree(hGloabl);
return FALSE;
}
CImage img;
memcpy(pData, g_Struct_SaveImgTotal.StructSaveImg[SaveSer].data, LENGTH_IMG_ALL);
int ret = img.Load(pStream);
img.Save((LPCTSTR)(g_Struct_SaveImgTotal.StructSaveImg[SaveSer].savePath));
img.Destroy();
[解决办法]
给楼主两个参考
1.我的BLOG
http://blog.csdn.net/tiger9991/article/details/7980870
2.MSDN
Setting JPEG Compression Level
[解决办法]
楼上给的回复基本于楼主的问题无关。
说实在的,目前我看到的唯一的能保存为8位的就是PS。
GDI+也不行。