L_StartDithering

# include“l_bitmap.h”

L_LTKRN_APIL_INTL_StartDithering (pBitmap pPalette uColors)

初始化缓冲犹豫不决的位图。然后由犹豫不决L_DitherLine供给函数和一个函数。这是结束的L_StopDithering函数。(抖动是使用误差扩散的过程来减少图像中颜色的数量)。

参数

pBITMAPHANDLEpBitmap

位图句柄指针对输入图像的所有信息。位图并不一定存在,但必须完整的信息。位图处理DitheringMethod字段指定抖动方法用于颜色还原。

L_RGBQUAD* pPalette

指针的调色板L_DitherLine函数将使用抖动。你可以指定自己的调色板,或使用空铅的固定板。

L_UINTuColors

数量的颜色使用的调色板。如果面板包含更多的颜色,只有第一个uColors使用颜色。有效值是2 - 256。

返回

价值 意义
成功 函数是成功的。
< 1 一个错误发生。指返回代码

评论

这个函数不支持已签名的数据图像。它返回错误代码ERROR_SIGNED_DATA_NOT_SUPPORTED如果签名数据图像是传递给这个函数。

下面的流程图显示了函数之间的关系:

图像\ dithbuf.gif

在调用这个函数之前,以下字段必须指定位图句柄:

必需的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);返回成功;}

LEADTOOLS光栅成像C API的帮助
188金宝搏的网址客服|支持|联系我们|知识产权的通知
©1991 - 2021领先的技术公司。保留所有权利。