bool GetImageCLSID(const WCHAR* format, CLSID* pCLSID)
{
UINT num = 0;
UINT size = 0;
ImageCodecInfo* pImageCodecInfo = NULL;
GetImageEncodersSize(&num, &size);
if(size == 0)
return FALSE; // 编码信息不可用
//分配内存
pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
if(pImageCodecInfo == NULL)
return FALSE; // 分配失败
//获得系统中可用的编码方式的所有信息
GetImageEncoders(num, size, pImageCodecInfo);
//在可用编码信息中查找format格式是否被支持
for(UINT i = 0; i < num; ++i)
{ //MimeType:编码方式的具体描述
if(wcscmp(pImageCodecInfo[i].MimeType, format) == 0 )
{
*pCLSID = pImageCodecInfo[i].Clsid;
free(pImageCodecInfo);
return TRUE;
}
}
free(pImageCodecInfo);
return FALSE;
// return 0;
}
void C实验对话框2Dlg::OnBnClickedButadd()
{
// TODO: 在此添加控件通知处理程序代码
EncoderParameters encodeparameters;
ULONG parametervalue;
Status stat;
encodeparameters.Count=1;
encodeparameters.Parameter[0].Guid=EncoderSaveFlag;
encodeparameters.Parameter[0].Type=EncoderParameterValueTypeLong;
encodeparameters.Parameter[0].NumberOfValues=1;
encodeparameters.Parameter[0].Value=¶metervalue;
CLSID encoderClsid;
GetImageCLSID(L"image/tiff",&encoderClsid);
Image* image1=::new Image(L"1.jpg");
Image* image2=::new Image(L"2.jpg");
parametervalue=EncoderValueMultiFrame;//多帧编码
stat=image1->Save(L"3.tif",&encoderClsid,&encodeparameters);
if(stat!=Ok)
MessageBox("error");
parametervalue=EncoderValueFrameDimensionPage;//此为TIF文件;为gif文件时用EncoderValueFrameDimensionTime
stat=image1->SaveAdd(image2,&encodeparameters);
if(stat!=Ok)
MessageBox("error2");
parametervalue=EncoderValueFlush;
stat=image1->SaveAdd(&encodeparameters);
if(stat!=Ok)
MessageBox("error3");
image2->~Image();
image1->~Image();
}