# include“l_bitmap.h”
L_LTKRN_APIL_INTL_ConvertBuffer (pbuf、nWidth nBitsPerPixelSrc、nBitsPerPixelDst nOrderSrc, nOrderDst, pPaletteSrc, pPaletteDst)
将指定的缓冲区中的数据转换为指定的每像素位数和颜色。你可以转换任何比特每像素比特每像素。
指向输入缓冲区的指针。
图像的宽度,以像素为单位。
输入比特每像素。可能的值是1,2,3,4,5,6,7,8,16日,24日,32岁的48和64。
输出比特每像素。使用0 8位灰度。
输入颜色顺序。可能的值是:
价值 | 意义 |
---|---|
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比特位图像。 |
输出颜色顺序。可能的值是:
价值 | 意义 |
---|---|
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比特位图像。 |
指针指向现有的面板数据,在转换。如果数据被转换从16或每像素24位,使用零没有调色板。
指针转换的面板数据。如果数据被转换为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.Height
16日,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);
返回成功;
}
帮助收藏
光栅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点
联系我们请填写这张表格,我们将通过电子邮件联系你。