# 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点
联系我们请填写这张表格,我们将通过电子邮件联系你。
