要将一种格式的文件转换成另一种格式的文件进行保存,只需要找出要保存的格式的图形文件的编码器,并用Image类的Save函数来实现格式的转换。
Status Save(const WCHAR* filename, const CLSID* clsidEncoder, const EncoderParameters* encoderParams);
filename:保存文件的文件名。
clsidEncoder:图形文件的编码器类别标识
encoderParams:图形文件的编码器参数列表
在使用Image类的Save函数时,基本可以按照这样的思路来理解图形文件的保存过程:
如果不使用clsidEncoder参数,Save函数保存的新文件的格式将与源文件一样
如果使用clsidEncoder参数,Save函数将按照默认值保存指定格式的新文件
如果使用clsidEncoder参数和encoderParams参数,Save函数不但可以按照新格式保存文件,而且还可以对新文件的保存格式进行细化,西化的结果取决于参数encoderParams的内容。
代码实现将BMP转换为PNG格式
void C油表View::OnGdiSavabmp2png()
{
// TODO: 在此添加命令处理程序代码
Graphics graphics(this->m_hWnd);
CLSID encoderClsid;
Status stat;
Image image(L"cos.bmp");
RectF rect(0, 0, image.GetWidth() / 2, image.GetHeight() / 2);
graphics.DrawImage(&image, rect);
/////获取PNG文件的编码方式
GetEncoderClsid(L"image/png", &encoderClsid);
/////将BMP保存为PNG文件
stat = image.Save(L"cos.png", &encoderClsid, NULL);
if (stat == Ok)
{
/////如果PNG文件保存成功,加载并显示
Image imagepng(L"cos.png");
graphics.TranslateTransform(rect.Width, 0);
graphics.DrawImage(&imagepng, rect);
}
else
{
AfxMessageBox(L"文件保存失败!");
}
}
代码实现: