L_ConvertBufferExt2

# include“l_bitmap.h”

L_LTKRN_APIL_INTL_ConvertBufferExt2 (pbuf、nWidth nBitsPerPixelSrc、nBitsPerPixelDst nOrderSrc, nOrderDst, pPaletteSrc, pPaletteDst, pPaletteSrc16, pPaletteDst16, uFlags, uLowBit, uHighBit)

将指定的缓冲区中的数据转换为指定的每像素位数和颜色。你可以转换任何比特每像素比特每像素。

参数

L_UCHAR* pbuf

指向输入缓冲区的指针。

L_INTnWidth

图像的宽度,以像素为单位。

L_INTnBitsPerPixelSrc

输入比特每像素。可能的值是1,2,3,4,5,6,7,8,16日,24日,32岁的48和64。

L_INTnBitsPerPixelDst

输出比特每像素。使用0 8位灰度。

L_INTnOrderSrc

输入颜色顺序。可能的值是:

价值 意义
ORDER_RGB [0]输入的颜色是红-绿-蓝顺序。
ORDER_BGR [1]以blue-green-red顺序输入颜色。
ORDER_GRAY [2]输入灰度。
ORDER_ROMM [5]以罗姆顺序输入颜色。罗姆只支持24和48比特位图像。
0 数据是8位/像素或更少。

L_INTnOrderDst

输出颜色顺序。可能的值是:

价值 意义
ORDER_RGB [0]输出颜色是红-绿-蓝顺序。
ORDER_BGR [1]以blue-green-red顺序输出颜色。
ORDER_GRAY [2]输出灰度。
ORDER_ROMM [5]的输出颜色罗姆秩序。罗姆只支持24和48比特位图像。
0 数据是8位/像素或更少。

L_RGBQUAD* pPaletteSrc

指针指向现有的面板数据,在转换。如果数据被转换从16或每像素24位,使用零没有调色板。

L_RGBQUAD* pPaletteDst

指针转换的面板数据。如果数据被转换为16或每像素24位颜色,使用零没有调色板。

L_RGBQUAD16* pPaletteSrc16

指针的16位附近地区现有的数据,之前转换。如果数据被转换从16或每像素24位,使用零没有调色板。

L_RGBQUAD16* pPaletteDst16

保留以供将来使用。通过零。

L_UINTuFlags

标志指示是否将16位数据灰度或颜色。可能的值是:

价值 意义
CVT_SRCGRAY [0 x0001]缓冲灰度数据来源。
CVT_DSTGRAY [0 x0002]目的地缓冲区灰度数据。
CVT_SRCUSEBITS [0 x0004]uLowBituHighBit适用于源位图。
CVT_SRCDSTBITS 0 x0004 uLowBit和uHighBit应用到目标位图。
CVT_DSTUSEBITS [0 x0008] uLowBit和uHighBit应用到目标位图。
CVT_USEALPHA [0 x0010]使用alpha通道数据(如果存在)。
CVT_ALPHAINIT [0 x0020]初始化alpha通道(32或64位彩色图像)所有的(0 xff为16位8位alpha通道和0 xffff阿尔法通道)。如果没有这个标志,创建alpha通道初始化零。
CVT_SIGNED [0 x0100]将图像数据作为数据在转换签署。

L_INTuLowBit

值指示低比特源缓冲区,如果源缓冲区包含灰度数据。

L_INTuHighBit

值指示高在源缓冲区,如果源缓冲区包含灰度数据。

返回

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

评论

请注意:这个函数还将为12工作,16和32位灰度图像,但只有在文档和医疗成像工具包。如果您试图使用这个函数与12日16或32位灰度图像,但你没有医学成像版,你会收到一个错误。

转换只使用一个缓冲,它必须足够容纳之前和之后的数据转换。

少于或等于8位/像素的图像数据必须使用调色板,和这个函数可以使用这些数据作为输入,输出,或两者兼而有之。因此,您可能需要指定的面板输入或输出,或两者兼而有之。

如果任何一nBitsPerPixelSrcnBitsPerPixelDst是16或32,uFlags用于确定数据是否应该被视为颜色或灰度。

如果nBitsPerPixelSrc是12,它被认为是灰度。然而,uFlags参数也应该反映灰度为未来的兼容性。

如果源是灰度(32位),pPaletteSrc可以设置为一个调色板。面板应该包含N个分量。如果源使用uLowBituHighBit,然后N等于2的力量(uHighBit - uLowBit + 1)。否则,N等于2提高到nBitsPerPixelSrc的力量。注意,如果源是32位的灰度,pPaletteSrc参数的值将被忽略

uFlags取代nOrderSrcnOrderDst。如果指定ORDER_BGR nOrderSrc,但使用CVT_SRCGRAY uFlags,它将假定源缓冲区包含灰度数据。

pPaletteSrc16只有源使用灰度。在这种情况下,如果pPaletteSrc16不是零,它将取代pPaletteSrc参数。所以,如果你通过pPaletteSrc和pPaletteSrc16 pPaletteSrc16将被使用。

必需的dll和库

平台

Win32 x64, Linux。

另请参阅

功能

主题

例子

这个例子中加载一个临时在每像素24位位图,创建一个新的16位灰度图像,利用L_ConvertBufferExt2将临时位图的数据到新的一个。

L_INT ConvertBufferExt2Example (HWND HWND){L_INT nRet;BITMAPHANDLE LeadBitmap;/ *为最终的图像位图处理* /BITMAPHANDLE TmpBitmap;/ *位图句柄保存输入的图像* /L_UCHAR * pBuf;* / / *缓冲的行HGLOBAL hBuf;/ *处理缓冲区* /L_INT我;/ * * /循环计数器/ *加载位图,每像素24位* /nRet = L_LoadBitmap (MAKE_IMAGE_PATH(文本(“ImageProcessingDemo \ \ Image3.cmp”&TmpBitmap)),运算符0 (BITMAPHANDLE), 24日,空,空);如果(nRet ! =成功)返回nRet;/ *创建一个新的16位灰度位图* /nRet = L_CreateBitmap (&LeadBitmap,运算符(BITMAPHANDLE) TYPE_CONV TmpBitmap。宽度、TmpBitmap.Height16日,ORDER_GRAY, NULL, TmpBitmap。ViewPerspective零0);如果(nRet ! =成功)返回nRet;/ *分配和锁定缓冲区* /hBuf = GlobalAlloc (GMEM_MOVEABLE马克斯(LeadBitmap。BytesPerLine TmpBitmap.BytesPerLine));pBuf = (L_UCHAR *) GlobalLock (hBuf);/ *处理每一行从TmpBitmap LeadBitmap * /L_AccessBitmap (&LeadBitmap);L_AccessBitmap (&TmpBitmap);(i = 0;我< TmpBitmap.Height;我+ +){nRet = (L_INT) L_GetBitmapRow (&TmpBitmap, pBuf TmpBitmap.BytesPerLine);如果(nRet < 1)返回nRet;nRet = L_ConvertBufferExt2 (pBuf TmpBitmap.Width,TmpBitmap。BitsPerPixel LeadBitmap.BitsPerPixel,TmpBitmap。秩序,LeadBitmap。秩序,空,空,空,空,CVT_DSTGRAY 0 15);如果(nRet ! =成功)返回nRet;nRet = (L_INT) L_PutBitmapRow (&LeadBitmap, pBuf LeadBitmap.BytesPerLine);如果(nRet < 1)返回nRet;}L_ReleaseBitmap (&LeadBitmap);L_ReleaseBitmap (&TmpBitmap);/ *空闲内存,我们不再需要* /GlobalUnlock (hBuf);GlobalFree (hBuf);nRet = L_SaveBitmap (MAKE_IMAGE_PATH(文本(“Result.BMP”))、&LeadBitmap FILE_BMP, 24岁,0,NULL);如果(nRet ! =成功)返回nRet;/ *免费临时位图* /如果(TmpBitmap.Flags.Allocated)L_FreeBitmap (&TmpBitmap);如果(LeadBitmap.Flags.Allocated)L_FreeBitmap (&LeadBitmap);/ *力油漆调色板创建* /SendMessage (hWnd, WM_QUERYNEWPALETTE 0 0 l);返回成功;}

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