C++将方形的图片转换为圆形的图片

2023-02-09 16:48:09 2389人已围观 7已点赞 14人已收藏

简介本文介绍一个C++代码实战例子:将方形的图片转换为圆形的图片,感兴趣的朋友可以参考一下。

将方形的图片转换为圆形的图片

/**
* 将方形的图片转换为圆形的图片
*
* @param sSourcePicPath	  原始图片路径
* @param sTargetPicPath	  目标图片路径
*
**/
BOOL GetCircleImage(CString sSourcePicPath, CString sTargetPicPath)
{
	Image image(sSourcePicPath);
	Bitmap b(image.GetWidth(), image.GetHeight());
	Graphics g(&b);
	g.SetSmoothingMode(Gdiplus::SmoothingModeHighQuality);
	GraphicsPath p(FillModeAlternate);
	p.AddEllipse(0, 0, image.GetWidth(), image.GetHeight());
	g.FillPath(&TextureBrush(ℑ), &p);

	//获取编码器的CLSID [class id] 
	UINT num = 0;                     //图像编码器的数量 
	UINT size = 0;                    //图像编码器数组的字节数 
	CLSID encoderClsid;
	ImageCodecInfo* pICI = NULL;

	GetImageEncodersSize(&num, &size);//获得系统编码器的数量和大小 
	if (size == 0) return false;//失败 

	pICI = (ImageCodecInfo*)(malloc(size)); //编码器 
	if (pICI == NULL) return false;//失败 

	GetImageEncoders(num, size, pICI);    //获取编码器信息 
	for (UINT j = 0; j < num; ++j)
	{
		if (wcscmp(pICI[j].MimeType, L"image/png") == 0)//jpeg bmp gif tiff png 
		{
			encoderClsid = pICI[j].Clsid;
		}
	}
	free(pICI);

	Status s = b.Save(sTargetPicPath, &encoderClsid);//只有png才能保存下来透明信息

	return TRUE;
}

需要包含头文件:

#include "gdiplus.h"
using namespace Gdiplus;


更多为你推荐