vs 保存 BitMap

来源:互联网 发布:网络社区营销优点 编辑:程序博客网 时间:2024/04/30 20:33

有BitMap对象 需要保存到文件 保存为bmp格式

网上找到的很多方法是自己向文件中写文件头、文件标记、文件数据…… 完全自己生成了bmp文件。

其实还有简单方法

BitMap对象继承自 Image对象。而Image对象具有Save方法。这里直接调用BitMap的sava方法即可,简单、高效。

本人对该操作进行了简单封装 如下

int GetEncoderClsid(const WCHAR* format, CLSID* pClsid){UINT  num = 0;          // number of image encodersUINT  size = 0;         // size of the image encoder array in bytesImageCodecInfo* pImageCodecInfo = NULL;GetImageEncodersSize(&num, &size);if(size == 0)return -1;  // FailurepImageCodecInfo = (ImageCodecInfo*)(malloc(size));if(pImageCodecInfo == NULL)return -1;  // FailureGetImageEncoders(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}bool Save(Bitmap * const pBitMap, LPCTSTR lpFileName){CLSID encoderClsid;GetEncoderClsid(L"image/bmp", &encoderClsid);pBitMap->Save(lpFileName, &encoderClsid, NULL);return true;}
BitMap的sava方法 第二个参数指保存文件的类型 第三个参数是类型相关的参数 比如压缩方法 压缩率

BitMap的sava方法除了可以保存bmp外 还可以保存

  • image/bmp
  • image/jpeg
  • image/gif
  • image/tiff
  • image/png
这些图像格式的保存 需要设置相应的第三个参数

原创粉丝点击