L_ConvertBuffer

# include“l_bitmap.h”

L_LTKRN_APIL_INTL_ConvertBuffer (pbuf、nWidth nBitsPerPixelSrc、nBitsPerPixelDst nOrderSrc, nOrderDst, pPaletteSrc, pPaletteDst)

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

参数

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]12日16或32位灰度图像。12、16和32位灰度图像只支持文档和医疗成像工具包。
0 数据是8位/像素或更少。
ORDER_ROMM [5]以罗姆顺序输入颜色。罗姆只支持24和48比特位图像。

L_INTnOrderDst

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

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

L_RGBQUAD* pPaletteSrc

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

L_RGBQUAD* pPaletteDst

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

返回

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

评论

支持12、16和32位灰度图像仅仅是可用的文档和医疗成像工具包。

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

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

必需的dll和库

平台

Win32 x64, Linux。

另请参阅

功能

主题

例子

这个例子中加载一个临时位图以8位/像素,创建一个新的
在每像素16位位图,使用L_ConvertBuffer来转换数据
临时位图到新的一个。

L_INT ConvertBufferExample (HWND HWND){L_INT nRet;BITMAPHANDLE LeadBitmap;/ *位图句柄最后的图片* /RGBQUAD FixedPalette [256];/ *临时面板* /BITMAPHANDLE TmpBitmap;/ *位图句柄保存输入的图像* /L_UCHAR * pBuf;* / / *缓冲的行HGLOBAL hBuf;/ *处理缓冲区* /L_INT我;/ * * /循环计数器/ *加载位图,以8位/像素* /nRet = L_LoadBitmap (MAKE_IMAGE_PATH(文本(“ImageProcessingDemo \ \ Image3.cmp”&TmpBitmap)),运算符(BITMAPHANDLE) 8 0,零,零);如果(nRet ! =成功)返回nRet;/ *创建一个16位位图* /nRet = L_CreateBitmap (&LeadBitmap,运算符(BITMAPHANDLE) TYPE_CONV TmpBitmap。宽度、TmpBitmap.Height16日,ORDER_BGR, NULL, TmpBitmap。ViewPerspective零0);如果(nRet ! =成功)返回nRet;/ *得到固定的调色板一个* / 8位图像nRet = L_GetFixedPalette (FixedPalette 8);如果(nRet ! =成功)返回nRet;/ *分配和锁定缓冲区* /hBuf = GlobalAlloc (GMEM_MOVEABLE LeadBitmap.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_ConvertBuffer (pBuf TmpBitmap.Width,TmpBitmap。BitsPerPixel LeadBitmap.BitsPerPixel,TmpBitmap。秩序,LeadBitmap。秩序,FixedPalette, NULL);如果(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领先的技术公司。保留所有权利。