# include“l_bitmap.h”
L_LTKRN_APIL_INTL_StartDithering (pBitmap pPalette uColors)
初始化缓冲犹豫不决的位图。然后由犹豫不决L_DitherLine供给函数和一个函数。这是结束的L_StopDithering函数。(抖动是使用误差扩散的过程来减少图像中颜色的数量)。
位图句柄指针对输入图像的所有信息。位图并不一定存在,但必须完整的信息。位图处理DitheringMethod字段指定抖动方法用于颜色还原。
指针的调色板L_DitherLine函数将使用抖动。你可以指定自己的调色板,或使用空铅的固定板。
数量的颜色使用的调色板。如果面板包含更多的颜色,只有第一个uColors使用颜色。有效值是2 - 256。
价值 | 意义 |
---|---|
成功 | 函数是成功的。 |
< 1 | 一个错误发生。指返回代码。 |
这个函数不支持已签名的数据图像。它返回错误代码ERROR_SIGNED_DATA_NOT_SUPPORTED如果签名数据图像是传递给这个函数。
下面的流程图显示了函数之间的关系:
在调用这个函数之前,以下字段必须指定位图句柄:
Bitmap.Width
Bitmap.Height
Bitmap.BitsPerPixel
位图。ColorOrder如果BitsPerPixel大于8
位图。DitheringMethod如果BitsPerPixel小于16
必需的dll和库
Win32 x64, Linux。
这个例子中犹豫不决的每一行一个位图并将其写入另一个位图。
L_INT StartDitheringExample (pBITMAPHANDLE pBitmap)
{
L_INT nRet;
L_UCHAR * pInBuf;/ * * /缓冲区来保存输入行
HGLOBAL hInBuf;/ *处理输入缓冲区* /
L_UCHAR * pOutBuf;/ *缓冲输出行* /
HGLOBAL hOutBuf;/ *处理到输出缓冲区* /
BITMAPHANDLE TmpBitmap;* / / *位图包含输入数据
RGBQUAD FixedPalette [256];/ *固定面板* /
L_INT我;/ * * /循环计数器
/ *加载输入位图,每像素24位* /
nRet = L_LoadBitmap (MAKE_IMAGE_PATH(文本(“ImageProcessingDemo \ \ Image3.cmp”&TmpBitmap)),运算符ORDER_BGR (BITMAPHANDLE), 24日,空,空);
如果(nRet ! =成功)
返回nRet;
/ *分配输入缓冲区为24位数据* /
hInBuf = GlobalAlloc (GMEM_MOVEABLE TmpBitmap。宽度* 3);
pInBuf = (L_UCHAR *) GlobalLock (hInBuf);
/ *分配输出缓冲区为8位数据* /
hOutBuf = GlobalAlloc (GMEM_MOVEABLE TmpBitmap.Width);
pOutBuf = (L_UCHAR *) GlobalLock (hOutBuf);
/ *得到固定的调色板为一个* / 8位图像
L_GetFixedPalette (FixedPalette 8);
/ *创建新位图* /
如果(pBitmap - > Flags.Allocated)
L_FreeBitmap (pBitmap);
nRet = L_CreateBitmap (pBitmap,
运算符(BITMAPHANDLE),
TYPE_CONV,
TmpBitmap.Width,
TmpBitmap.Height,
8,/ * 8位/像素* /
0,不使用* / / *颜色秩序
空,/ *使用固定板* /
TmpBitmap。ViewPerspective零0);
如果(nRet ! =成功)
返回nRet;
/ *设置抖动方法* /
TmpBitmap。DitheringMethod = STEVENSON_ARCE_DITHERING;
/ *初始化* /抖动过程
nRet = L_StartDithering (&TmpBitmap FixedPalette 256);
如果(nRet ! =成功)
返回nRet;
/ *利用L_DitherLine过程每一个行在位图* /
L_AccessBitmap (pBitmap);
L_AccessBitmap (&TmpBitmap);
为(i = 0;我< TmpBitmap.Height;我+ +)
{
nRet = (L_INT) L_GetBitmapRow (&TmpBitmap, pInBuf TmpBitmap.BytesPerLine);
如果(nRet < 1)
返回nRet;
nRet = L_DitherLine (&TmpBitmap pInBuf pOutBuf);
如果(nRet ! =成功)
返回nRet;
nRet = (L_INT) L_PutBitmapRow (pBitmap pOutBuf,我,pBitmap - > BytesPerLine);
如果(nRet < 1)
返回nRet;
}
L_ReleaseBitmap (&TmpBitmap);
L_ReleaseBitmap (pBitmap);
L_FreeBitmap (&TmpBitmap);
/ * * /抖动过程结束
nRet = L_StopDithering (&TmpBitmap);
如果(nRet ! =成功)
返回nRet;
/ *空闲内存,我们不再需要* /
GlobalFree (hInBuf);
GlobalFree (hOutBuf);
返回成功;
}
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗Web查看器net
188宝金博怎么下载
支持的平台上
net, Java, Android和iOS / macOS组件
C / c++类库的API
HTML5 JavaScript库
你的邮件已经发送到支持!有人应该联系!如果你的问题是紧急请回到聊天。
聊天时间:
周一——周五,上午6点等
谢谢你的反馈!
请填写表单重新开始一个新的聊天。
所有代理目前离线。
聊天时间:
周一-周五
早上8:30 - 6点
联系我们请填写这张表格,我们将通过电子邮件联系你。