# include“l_bitmap.h”
L_LTIMGCLR_APIL_INTL_AddBitmaps (pBitmap uStructSize、hList uFlags)
列表中添加或平均的位图。
位图句柄指针引用生成的位图的应用效果。
结构大小的字节,指向pBitmap,版本控制。使用sizeof (BITMAPHANDLE)。
处理位图的列表。
国旗,表示操作执行。可能的值是:
价值 | 意义 |
---|---|
BC_AVG | [0 x0001]平均列表指定的位图。 |
BC_ADD | [0 x0002]添加位图在指定列表中。 |
价值 | 意义 |
---|---|
成功 | 函数是成功的。 |
< 1 | 一个错误发生。指返回代码。 |
这个操作可以用来添加一些图片相同的视图来提高明度或图像的亮度。它还可以消除随机噪声中包含这些图像通过平均所有的位图。
这个函数执行操作数据逐字节之间。分辨率图像可以是任何颜色。pBitmap被认为是未分配的。如果pBitmap包含位图,调用这个函数之前你应该免费。L_AddBitmaps将在pBitmap分配和存储所产生的位图。该操作所带来的图像内部复制从第一图像列表中,在执行添加操作。执行的操作是基于最小的输入图像的宽度和高度。
这个函数支持12和16位灰度和48和64位彩色图像。支持12和16位灰度和48和64位彩色图像是可用的文档和医疗成像工具包。
更新状态栏或检测用户中断在执行这个函数,引用L_SetStatusCallback。
这个函数不支持32位灰度图像。它返回错误代码ERROR_GRAY32_UNSUPPORTED如果一个32位的灰度图像是传递给这个函数。
的国旗标志BITMAPHANDLE所列的所有图像的结构必须相同。也就是说,所有hList图像必须签署或无符号。
必需的dll和库
Win32 x64, Linux。
这个示例创建一个位图列表通过位图,使它的副本,和每个图像旋转。然后所有的位图平均在一起。
L_INT AddBitmapsExample (L_VOID)
{
L_INT nRet;
HBITMAPLIST hList;/ * * /位图列表
BITMAPHANDLE LeadBitmap;/ *加载位图句柄保存图像。* /
BITMAPHANDLE TmpBitmap;/ *临时位图为操纵列表* /
BITMAPHANDLE ResultBitmap;* / / *所引起的位图操作
L_INT我;/ * * /循环计数器
/ *加载位图,保持文件的比特每像素* /
nRet = L_LoadBitmap (MAKE_IMAGE_PATH(文本(“IMAGE1.CMP”&LeadBitmap)),运算符(BITMAPHANDLE), 0 ORDER_BGR空,空);
如果(nRet ! =成功)
返回nRet;
/ *创建和填充位图列表* /
nRet = L_CreateBitmapList (&hList);
如果(nRet ! =成功)
返回nRet;
为(i = 0;我< 4;我+ +)
{
nRet = L_CopyBitmap (&TmpBitmap &LeadBitmap,运算符(BITMAPHANDLE));
如果(nRet ! =成功)
返回nRet;
我* 720,nRet = L_RotateBitmap (&TmpBitmap ROTATE_RESAMPLE, RGB (255, 0, 0));
如果(nRet ! =成功)
返回nRet;
nRet = L_InsertBitmapListItem (hList (L_UINT) 1, &TmpBitmap);
如果(nRet ! =成功)
返回nRet;
}
/ *把所有旋转位图和存储之间的平均在ResultBitmap * /
nRet = L_AddBitmaps (&ResultBitmap,运算符(BITMAPHANDLE)、hList BC_AVG);
如果(nRet ! =成功)
返回nRet;
nRet = L_DestroyBitmapList (hList);
如果(nRet ! =成功)
返回nRet;
nRet = L_SaveBitmap (MAKE_IMAGE_PATH(文本(“Result.BMP”))、&LeadBitmap FILE_BMP, 24岁,0,NULL);
如果(nRet ! =成功)
返回nRet;
/ /免费的位图
如果(LeadBitmap.Flags.Allocated)
L_FreeBitmap (&LeadBitmap);
L_FreeBitmap (&ResultBitmap);
返回成功;
}