gdiplus拼接两张图片_全网最简单的人脸UV展开+拼接
时间: 2023-07-01 11:04:51 浏览: 135
两张图片的拼接
4星 · 用户满意度95%
很抱歉,我不是很明白您的问题。不过,如果您是想了解如何使用 gdiplus 库拼接两张图片,可以参考以下代码:
```c++
#include <windows.h>
#include <gdiplus.h>
#pragma comment(lib, "gdiplus.lib")
using namespace Gdiplus;
int main()
{
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
// 加载图片1
Bitmap image1(L"image1.png");
int width1 = image1.GetWidth();
int height1 = image1.GetHeight();
// 加载图片2
Bitmap image2(L"image2.png");
int width2 = image2.GetWidth();
int height2 = image2.GetHeight();
// 创建新的 Bitmap 对象
Bitmap result(width1 + width2, max(height1, height2), PixelFormat32bppARGB);
Graphics graphics(&result);
// 将图片1绘制到新的 Bitmap 对象上
graphics.DrawImage(&image1, 0, 0, width1, height1);
// 将图片2绘制到新的 Bitmap 对象上
graphics.DrawImage(&image2, width1, 0, width2, height2);
// 保存结果图片
CLSID pngClsid;
GetEncoderClsid(L"image/png", &pngClsid);
result.Save(L"result.png", &pngClsid, NULL);
GdiplusShutdown(gdiplusToken);
return 0;
}
```
其中,`GetEncoderClsid` 函数用于获取指定格式的图片编码器的 CLSID,可以在下面找到:
```c++
int GetEncoderClsid(const WCHAR* format, CLSID* pClsid)
{
UINT num = 0;
UINT size = 0;
ImageCodecInfo* pImageCodecInfo = NULL;
GetImageEncodersSize(&num, &size);
if (size == 0) return -1;
pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
if (pImageCodecInfo == NULL) return -1;
GetImageEncoders(num, size, pImageCodecInfo);
for (UINT i = 0; i < num; ++i) {
if (lstrcmpiW(pImageCodecInfo[i].MimeType, format) == 0) {
*pClsid = pImageCodecInfo[i].Clsid;
free(pImageCodecInfo);
return i;
}
}
free(pImageCodecInfo);
return -1;
}
```
至于如何展开人脸 UV 并拼接,可以参考其他相关资料。
阅读全文