vs 保存 BitMap

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

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

其实还有简单方法

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

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

int GetEncoderClsid(const WCHAR* format, CLSID* pClsid)
{
	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
}
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
这些图像格式的保存 需要设置相应的第三个参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值