//jpeg转bmp的原理很简单,用ipciture读入jpg图像,然后在成bmp的,由于在vc 6.0里面可以自动存储的格式只有两种:bmp和ico,由此的来
void JpegToBmp(const char *resourcepath,const char *destnatepath)
{
IPicture *m_picture;
CFile file(resourcepath,CFile::modeRead);
DWORD m_filelen=file.GetLength();
HGLOBAL hglobal=GlobalAlloc(GMEM_MOVEABLE,m_filelen);
LPVOID pdata=NULL;
pdata=GlobalLock(hglobal);
file.ReadHuge(pdata,m_filelen);
IStream *m_stream;
GlobalUnlock(hglobal);
file.Close();
CreateStreamOnHGlobal(hglobal,TRUE,&m_stream);
OleLoadPicture(m_stream,m_filelen,TRUE,IID_IPicture,(LPVOID*)&m_picture);
LONG size;
m_picture->SaveAsFile(m_stream,TRUE,&size);
char pathbuf[1024];
CFile iconfile;
iconfile.Open(destnatepath,CFile::modeCreate|CFile::modeWrite);
LARGE_INTEGER li;
li.HighPart = 0;
li.LowPart = 0;
ULARGE_INTEGER ulnewpos;
m_stream->Seek(li,STREAM_SEEK_SET,&ulnewpos);
ULONG uReadCount = 1;
while(uReadCount>0)
{
m_stream->Read(pathbuf,sizeof(pathbuf),&uReadCount);
if(uReadCount>0)
iconfile.Write(pathbuf,uReadCount);
}
GlobalFree(hglobal);
m_stream->Release();
m_stream=NULL;
m_picture->Release();
}
bmp转jpg的麻烦一点儿,因为jpg需要复杂的解压,从网上download了一个,可用主要是通过两个类实现: