GDI+实现图片的参数设置:
上代码:
void C油表View::OnGdiBmp2jpg()
{
// TODO: 在此添加命令处理程序代码
Graphics graphics(this->m_hWnd);
this->RedrawWindow();
CLSID encoderClsid;
EncoderParameters encoderParameters;
ULONG quality;
Status stat;
/////加载图片
Image image(L"媳妇~.bmp");
RectF rect(0, 0, image.GetWidth() / 2,image.GetHeight() / 2);
///显示正常图片
graphics.DrawImage(&image, rect);
////获取JPEG格式的编码方式
GetEncoderClsid(L"image/jpeg", &encoderClsid);
////构造编码参数列表EncoderParameters
////数组中只包含一个EncoderParameters对象
encoderParameters.Count = 1;
encoderParameters.Parameter[0].Guid = EncoderQuality;
////参数类型为Long
encoderParameters.Parameter[0].Type = EncoderParameterValueTypeLong;
/////只设置一个参数
encoderParameters.Parameter[0].NumberOfValues = 1;
////设置JPEG图片质量为低
quality = 0;
encoderParameters.Parameter[0].Value = &quality;
stat = image.Save(L"Jcos-1.jpg", &encoderClsid, &encoderParameters);
if (stat == Ok)
{
Image image01(L"Jcos-1.jpg");
////绘图平面右移
graphics.TranslateTransform(rect.Width + 10, 0);
graphics.DrawImage(&image01, rect);
}
else
{
AfxMessageBox(L"文件保存失败");
}
///设置保存JPEG图片质量为中等
quality = 50;
encoderParameters.Parameter[0].Value = &quality;
stat = image.Save(L"Jcos-2.jpg", &encoderClsid, &encoderParameters);
if (stat == Ok)
{
Image image02(L"Jcos-2.jpg");
/////重置绘图平面冰下移
graphics.ResetTransform();
graphics.TranslateTransform(0, rect.Height + 10);
graphics.DrawImage(&image02, rect);
}
else
{
AfxMessageBox(L"文件保存失败!");
}
quality = 100;
encoderParameters.Parameter[0].Value = &quality;
stat = image.Save(L"Jcos-3.jpg", &encoderClsid, &encoderParameters);
if (stat == Ok)
{
Image image03(L"Jcos-3.jpg");
//graphics.ResetTransform();
graphics.TranslateTransform(rect.Width+10, 0);
graphics.DrawImage(&image03, rect);
}
else
{
AfxMessageBox(L"文件保存失败!");
}
}
代码实现: