L_GrayScaleToMultitone

# include“l_bitmap.h”

L_LTIMGCLR_APIL_INTL_GrayScaleToMultitone(pBitmap, uToneType, uDistType, pColor, pGradient, uFlags)

将灰度位图转换为彩色位图,方法是用一个或多个新颜色混合或替换像素的原始值。

参数

pBITMAPHANDLEpBitmap

指向引用位图的位图句柄的指针。

L_UINTuToneType

标志,指示要添加到灰度位图的颜色数。可能取值为:

价值 意义
DT_MONOTONE [0x0000]添加一个颜色。
DT_DUOTONE [0x0001]添加两种颜色。
DT_TRITONE [0x0002]添加三种颜色。
DT_QUADTONE [0x0003]添加四种颜色。

L_UINTuDistType

标志,指示要添加到位图的颜色的来源。可能取值为:

价值 意义
DT_LINEAR 使用由暗到亮的线性渐变,由工具箱生成。如果设置了该标志,LEADTOOLS将忽略pGradient参数,并更新pColor参数,使用工具箱生成的颜色数组。
DT_USERDEFINE [1]在pGradient参数中使用用户自定义的梯度。

LPCOLORREFpColor

指向RGB颜色数组的指针,该数组将被添加到灰度位图中。时,此参数将被忽略uDistType参数被设置为DT_USER。如果工具箱正在生成渐变颜色,那么当调用L_GrayScaleToMultitone时,用户将在此参数中设置所需的基本颜色。数组中的条目数取决于的值uToneTypeDT_MONOTONE为1,DT_DUOTONE为2,DT_TRITONE为3,DT_QUADTONE为4。当工具箱生成渐变颜色数组时,此参数将随该数组一起更新。

LPRGBQUAD * pGradient

指向用户定义的调色板条目数组的指针,该数组将保存一组颜色深浅渐变。当uDistType参数被设置为DT_USER。

对于每个TONE,该数组中的条目数应该是256个条目。

L_UINTuFlags

标志,用于确定新颜色是否替换旧颜色,或者新颜色是否将与旧颜色混合。可能取值为:

价值 意义
DT_MIX [0x0000]将新旧颜色混合
DT_REPLACE [0x0001]用新的颜色替换旧的颜色

返回

价值 意义
成功 活动很成功。
< 1 发生错误。指返回代码

评论

此函数不支持签名数据映像。如果将签名数据图像传递给该函数,则返回错误代码ERROR_SIGNED_DATA_NOT_SUPPORTED。

此函数设计用于灰度位图。如果使用的位图不是灰度的,这个函数只影响那些红=绿=蓝的位图像素或区域。

通过设置可以实现单调转换uFlags到DT_REPLACE,这将清除面板。

这个函数让您可以选择让工具箱生成要使用的颜色数组,或者创建要自己使用的颜色数组。

要让工具箱生成颜色数组:

  1. 如果位图是二进制的,调用L_GrayScaleToMultitone, uToneType设置为DT_MONOTONE,uDistTypeset为DT_LINEAR,并在pColor中设置你想要使用的颜色。的L_IsGrayScaleBitmap函数将被L_GrayScaleToDuotone调用,以确定所使用的灰度调色板的类型。如果L_IsGrayScaleBitmap返回GRAY_ORDEREDINVERSE或GRAY_NOTORDERED,那么通过pColor参数传递给L_GrayScaleToMultitone的颜色将成为工具箱生成的数组中的第一个颜色,而工具箱将在数组中创建第二个颜色。的pColor数组将更新为这两种颜色。

    如果L_IsGrayScaleBitmap返回的值不是GRAY_ORDEREDINVERSE或GRAY_NOTORDERED,那么通过pColor参数传递给L_GrayScaleToMultitone的颜色将成为工具箱生成的数组中的第二个颜色,而工具箱将在数组中创建第一个颜色。pColor参数将被更新为这两种颜色。

  2. 如果位图是灰度(不是二进制)调用L_GrayScaleToMultitone, uDistType设置为DT_LINEAR。L_GrayScaleToMultitone函数将获取pColor参数中传递给它的颜色,并为每种颜色生成256种颜色梯度。

    • 如果uToneType设置为DT_DUOTONE,则在pColor参数中设置两种颜色。该工具包将为每种颜色创建一个256色数组。pColor数组将更新为所有512种颜色。

    • 如果uToneType设置为DT_TRITONE时,在pColor参数。该工具包将为每种颜色创建一个256色数组。pColor数组将更新为所有768种颜色。

    • 如果uToneType设置为DT_QUADTONE,则在pColor参数中设置四种颜色。该工具包将为每种颜色创建一个256色数组。pColor数组将更新为所有1024种颜色。

  3. 如果位图不是灰度的(它是彩色的)调用L_GrayScaleToMultitone withuDistType设置为DT_LINEAR。函数L_GrayScaleToMultitone将获取在pColor参数,并为每种颜色生成256色梯度。(详见上文(b)第i、ii及iii部分的详细解释。)这些颜色将只用于改变彩色图像中红色=绿色=蓝色的像素。

使用用户定义的颜色数组:

  1. 如果位图是二进制的,调用L_GrayScaleToMultitone,将uToneType设置为DT_MONOTONE, uDistType设置为DT_USER,并将两种颜色设置为pGradient参数。

  2. 如果位图是灰度(不是二进制)调用L_GrayScaleToMultitone, uDistType设置为DT_USER。

    • 如果uToneType设置为DT_DUOTONE,则在pGradient参数中设置512种颜色(每种基本颜色256种)。

    • 如果uToneType设置为DT_TRITONE,在pGradient参数中设置768种颜色(每种基本颜色256种)。

    • 如果uToneType设置为DT_QUADTONE时,设置1024种颜色(每个基本颜色256种)pGradient参数。

  3. 如果位图不是灰度的(它是彩色的)调用L_GrayScaleToMultitone withuDistType设置为DT_USER。(详见上文(b)第i、ii及iii部分的详细解释。)这些颜色将只用于改变彩色图像中红色=绿色=蓝色的像素。

该功能支持12位和16位灰度和48位和64位彩色图像。支持12位和16位灰度以及48位和64位彩色图像文件和医疗成像工具包。

此函数不支持32位灰度图像。如果将32位灰度图像传递给该函数,则返回错误代码ERROR_GRAY32_UNSUPPORTED。

必需的dll和库

平台

Win32, x64, Linux。

另请参阅

功能

主题

例子

下面的示例加载一个位图,并对其应用Duotone转换。

L_INT GrayScaleToMultitoneExample (L_VOID)L_INT nRet;BITMAPHANDLE LeadBitmap;/*存放加载图像的位图句柄。* /也就是说crColor [2];/*新颜色*//*加载位图,保持文件的每像素位nRet = L_LoadBitmap (MAKE_IMAGE_PATH(TEXT(“ImageProcessingDemo \ \ Beauty16.jpg”&LeadBitmap)),运算符(bitmaphandle), 0, order_bgr, null, null);如果(nRet ! =成功)返回nRet;/*将位图改为灰度位图*/nRet = L_GrayScaleBitmap (&LeadBitmap, 8);如果(nRet ! =成功)返回nRet;/ /免费的位图/*新颜色*/crColor[0] = RGB(255,255,0);crColor[1] = RGB(255,0,0);/*应用多音转换*/nRet = L_GrayScaleToMultitone(&LeadBitmap, DT_DUOTONE, DT_LINEAR, crColor, NULL, DT_MIX);如果(nRet ! =成功)返回nRet;L_SaveBitmap(MAKE_IMAGE_PATH(TEXT)“Result.BMP”)), &LeadBitmap, FILE_BMP, 24, 0, NULL);如果(nRet ! =成功)返回nRet;/ /免费的位图如果(LeadBitmap.Flags.Allocated)L_FreeBitmap (&LeadBitmap);返回成功;

栅格成像C API帮助
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领德科技有限公司版权所有。