# include“l_bitmap.h”
L_LTIMGCLR_APIL_INTL_GrayScaleToDuotone (pBitmap pNewColor、crColor uFlags)
将灰度图转换成一个彩色混合或像素的原始值替换为新的颜色。
位图句柄指针引用的位图。
指针指向一个RGBQUAD结构,指定一个颜色数组将混合与原灰度值。如果这个参数设置为NULL,crColor
参数必须包含一个有效的颜色。通过零当你想要颜色的函数来创建数组,两种颜色当替换这两个颜色在一个二进制图像,或256颜色当使用一个自定义的颜色数组。
RGB颜色将被用于创建一个数组内部的颜色。这个参数时使用pNewColor
结构设置为NULL。将忽略此参数如果pNewColor值是零。
国旗表明颜色是否混合或替换。可能的值是:
价值 | 意义 |
---|---|
DT_MIX | [0 x0000]混合旧与新的颜色。 |
DT_REPLACE | [0 x0001]取代旧的与新的颜色。 |
价值 | 意义 |
---|---|
成功 | 函数是成功的。 |
< 1 | 一个错误发生。指返回代码。 |
这个函数不支持已签名的数据图像。它返回错误代码ERROR_SIGNED_DATA_NOT_SUPPORTED如果签名数据图像是传递给这个函数。
这个函数被设计用于灰度位图。如果没有灰度位图使用,这个函数只会影响那些像素或区域的位图,红色=绿色=蓝色。
这个函数将8位灰度位图转换成彩色8位位图(板)与此同时,12位和16位灰度位图转换为48比特位彩色位图。
可以通过设置单调转换uFlags
DT_REPLACE,扫清了调色板。
这个功能让你的选择工具箱生成颜色使用或创建数组的数组使用你自己的颜色。
有颜色的工具箱生成数组:
通过颜色用于生成数组crColor渐变颜色的参数。
如果位图是二进制,L_IsGrayScaleBitmapL_GrayScaleToDuotone函数来确定使用的灰度调色板。如果L_IsGrayScaleBitmap返回GRAY_ORDEREDINVERSE或GRAY_NOTORDERED,那么颜色在crColor参数传递给L_GrayScaleToDuotone将成为第一个颜色数组中生成的工具包,pNewColor
[0],工具箱将创建第二个数组中颜色pNewColor [1]。
如果L_IsGrayScaleBitmap GRAY_ORDEREDINVERSE或GRAY_NOTORDERED以外的返回值,那么颜色在crColor参数传递给L_GrayScaleToDuotone将成为第二个颜色数组中生成的工具包,pNewColor[1],和工具箱将创建第一个颜色数组中的pNewColor [0]。
如果灰度位图(二进制)L_GrayScaleToDuotone将crColor颜色传递给它的参数并生成一个256年pNewColor颜色梯度。
如果没有灰度位图(颜色)然后L_GrayScaleToDuotone将使用颜色传递给它crColor
在pNewColor参数并生成一张256年的彩色梯度。这些颜色将被用来改变只有那些像素的红色=绿色=蓝色的彩色图像。
使用用户定义的颜色:
如果位图是二进制,叫L_GrayScaleToDuotone的两种颜色您希望使用pNewColor参数。
如果灰度位图(二进制)调用L_GrayScaleToDuotone的256种颜色您希望使用pNewColor参数。
如果没有灰度位图(颜色)调用L_GrayScaleToDuotone 256您要使用的颜色pNewColor
参数。这些颜色将被用来改变只有那些像素的红色=绿色=蓝色的彩色图像。
这个函数支持12和16位灰度和48和64位彩色图像。支持12和16位灰度和48和64位彩色图像是可用的文档和医疗成像工具包。
这个函数不支持32位灰度图像。它返回错误代码ERROR_GRAY32_UNSUPPORTED如果一个32位的灰度图像是传递给这个函数。
必需的dll和库
Win32 x64, Linux。
这个示例加载位图,并将其转换为双色版。
L_INT GrayScaleToDuotoneExample (L_VOID)
{
L_INT nRet;
BITMAPHANDLE LeadBitmap;/ *加载位图句柄保存图像。* /
也就是说crColor;/ *新颜色* /
/ *加载位图,保持文件的比特每像素* /
nRet = L_LoadBitmap (MAKE_IMAGE_PATH(文本(“ImageProcessingDemo \ \ Beauty16.jpg”&LeadBitmap)),运算符(BITMAPHANDLE), 0 ORDER_BGR空,空);
如果(nRet ! =成功)
返回nRet;
/ *改变位图灰度位图* /
nRet = L_GrayScaleBitmap (&LeadBitmap 8);
如果(nRet ! =成功)
返回nRet;
/ *新颜色是红色* /
crColor = RGB (255, 0, 0);
* / / *应用双色版转换
nRet = L_GrayScaleToDuotone (&LeadBitmap, NULL, crColor DT_REPLACE);
如果(nRet ! =成功)
返回nRet;
nRet = L_SaveBitmap (MAKE_IMAGE_PATH(文本(“Result.BMP”))、&LeadBitmap FILE_BMP, 24岁,0,NULL);
如果(nRet ! =成功)
返回nRet;
/ /免费的位图
如果(LeadBitmap.Flags.Allocated)
L_FreeBitmap (&LeadBitmap);
返回成功;
}