GDI+将CDC中画好的图像,保存到文件中
2017-12-09 19:07
405 查看
实现代码如下:
int CGDIPSDIView::GetEncoderClsid( const WCHAR* format, CLSID* pClsid ) //GDI+取得不同类型图片编码类型的函数 { UINT num = 0; // number of image encoders UINT size = 0; // size of the image encoder array in bytes ImageCodecInfo* pImageCodecInfo = NULL; GetImageEncodersSize(&num, &size); if(size == 0) return -1; // Failure pImageCodecInfo = (ImageCodecInfo*)(malloc(size)); if(pImageCodecInfo == NULL) return -1; // Failure GetImageEncoders(num, size, pImageCodecInfo); for(UINT j = 0; j < num; ++j) { if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 ) { *pClsid = pImageCodecInfo[j].Clsid; free(pImageCodecInfo); return j; // Success } } free(pImageCodecInfo); return -1; // Failure } void CGDIPSDIView::GetGDIPBitMap( ) //测试函数 { CDC* pdc = GetDC( ); CRect RT; GetClientRect( &RT ); //取得屏幕DC(你绘图的那个DC)及绘图区域 CDC memdc; memdc.CreateCompatibleDC( pdc ); //创建内存DC CBitmap membmp; membmp.CreateCompatibleBitmap( pdc, RT.Width( ), RT.Height( ) ); //创建内存位图 memdc.SelectObject( &membmp ); //DC与位图勾连 memdc.BitBlt( 0,0, RT.Width( ), RT.Height( ), pdc, 0, 0, SRCCOPY ); //将屏幕DC(你绘图的那个DC)内容拷贝到内存DC当中,相当与将你的绘图拷贝到了membmp上。 Bitmap gBitMap( ( HBITMAP )membmp.m_hObject, NULL ); //创建通过构造函数或者通过FromHBITMAP函数创建一个Bitmap,注意它和Image的区别,一般不用Image,Image功能太少,是Bitmap的基类 CLSID bmpClsid; GetEncoderClsid(L"image/bmp", &bmpClsid); //设置编码参数 ULONG encoderQuality = 50; //压缩比例 EncoderParameters encoderParameters; encoderParameters.Count = 1; encoderParameters.Parameter[0].Guid = EncoderQuality; encoderParameters.Parameter[0].Type = EncoderParameterValueTypeLong; encoderParameters.Parameter[0].NumberOfValues = 1; encoderParameters.Parameter[0].Value = &encoderQuality; gBitMap.Save(L"c:\\1.bmp", &bmpClsid, encoderParameters); //保存成bmp CLSID pngid; GetEncoderClsid(L"image/png", &pngid); Status status = gBitMap.Save(L"c:\\1.png",&pngid,NULL); //保存成png membmp.DeleteObject( ); memdc.DeleteDC( ); }
相关文章推荐
- GDI+ 将BMP 32图像转换为JPG文件格式保存
- GDI+ 摘要: 保存图像文件
- GDI+ 总结一: 保存图像文件
- GDI+ 总结一: 保存图像文件
- GDI+ 总结一: 保存图像文件
- 如何将OPENGL图像保存到BMP文件
- 图像保存到XML文件和从XML中取出图像显示
- 使用GDI+的MFC应用程序的文件打开和保存对话框
- 将可视化组件保存在png图像文件中
- OpenCV显示摄像头图像保存成bmp文件
- 使用 Video4Linux 采集USB摄像头的图像,并保存到一张 jpg图像文件中的程序
- 猎豹MFC--使用GDI+打开保存图片--把bmp格式图像 保存为了 jpeg格式
- 保存HBITMAP图像到文件中
- matlab 中将保存图像的mat文件转换为图像文件
- 将当前界面的可视组件保存在png图像文件中
- Qt从指定目录读取图像文件保存并在QLabel上不断显示Demo
- MATLAB读取图像的每一帧处理之后保存成视频文件
- 图像处理工具包ImagXpress如何超快保存多页的TIFF文件
- MFC中将所画图像保存到图像文件
- DICOM医学图像处理:Dcmtk与fo-dicom保存文件的不同设计模式之“同步VS异步”+“单线程VS多线程”