# include“l_bitmap.h”
L_LTKRN_APIL_SSIZE_TL_GetBitmapRow(pBitmap, pBuffer, nRow, uBytes)
从指定的位图检索行。缓冲区pbuf
分应包含未压缩的数据是否pBitmap
是否压缩。
指向位图句柄的指针,该句柄引用要从中获取行的位图。
指向保存此函数获取的图像数据的缓冲区的指针。在调用此函数之前,必须分配缓冲区,并且缓冲区必须足够大以容纳图像数据。注意:缓冲区中的数据将被填充到pBitmap
- > BytesPerLine。
要检索的行号。第一行是0,最后一行比位图高度小1。
要检索的行中的字节数。要获取整行,请使用位图句柄中的BytesPerLine字段中的值。当获取的数据小于整行时,必须考虑每像素的比特数。
价值 | 意义 |
---|---|
1比特位图 | 每个字节代表8个像素。 |
4比特位图 | 每个字节代表2个像素。 |
8位位图 | 每个字节代表1个像素。 |
16位位图 | 每2个字节代表一个像素。 |
24位位图 | 每三个字节代表一个像素。 |
32位的位图 | 每四个字节代表一个像素。 |
48比特位位图 | 每六个字节代表一个像素。 |
64位位图 | 每八个字节代表一个像素。 |
您可以使用位图句柄的BitsPerPixel字段和整数数学来计算特定像素数量所需的字节数。例如:
NumberOfBytes =(位图。BitsPerPixel * NumberOfPixels) / 8;
如果((位图。BitsPerPixel * NumberOfPixels) % 8)
+ + NumberOfBytes;/*舍入如果必要的为1位或4位映像*/
价值 | 意义 |
---|---|
> = 1 | 复制的字节数。 |
< 1 | 发生错误。指返回代码. |
此函数将图像数据从位图复制到指定的缓冲区。复制的数据与存储在映像中的数据完全相同。使用该功能时,位图内存必须处于锁定状态。正常情况下,你可以打电话L_AccessBitmap若要在开始使用此函数的操作之前锁定内存,请调用L_ReleaseBitmap当操作结束时。
在位图句柄中使用BytesPerLine字段来确定每一行的字节数。颜色顺序由位图句柄中的order字段决定。取值为ORDER_RGB、ORDER_BGR、ORDER_GRAY或ORDER_ROMM。ORDER_GRAY仅对12、16和32位灰度图像有效。对12、16和32位灰度图像的支持仅在文件和医疗成像工具包。
必需的dll和库
Win32, x64, Linux。
要获得完整的示例代码,请参阅GETROW
的例子。
这个示例从位图中获取每一行,反转颜色值,并将行放回位图中。
L_INT GetBitmapRowExample (L_VOID)
{
L_INT nRet;
BITMAPHANDLE LeadBitmap;/*保存加载图像的位图句柄
L_UCHAR * pBuf;/*保存行的缓冲区*/
HGLOBAL hBuf;/*缓冲区的句柄*/
L_INT nRow;/*行计数器*/
L_UINT uByte;/*字节计数器*/
/*加载位图,每像素24位*/
nRet = L_LoadBitmap (MAKE_IMAGE_PATH(TEXT(“ImageProcessingDemo \ \ Image3.cmp”&LeadBitmap)),运算符(bitmaphandle), 24, order_bgr, null, null);
如果(nRet != SUCCESS)
返回nRet;
/*分配并锁定缓冲区*/
hBuf = GlobalAlloc(GMEM_MOVEABLE,LeadBitmap.BytesPerLine);
pBuf = (L_UCHAR *)GlobalLock(hBuf);
/ *过程每一个行在位图*/
L_AccessBitmap (&LeadBitmap);
为(nRow = 0;nRow < LeadBitmap.Height;nRow + +)
{
nRet =(L_INT) L_GetBitmapRow(&LeadBitmap, pBuf, nRow, LeadBitmap.BytesPerLine);
如果(nRet < 1)
返回nRet;
为(uByte = 0;uByte < LeadBitmap.BytesPerLine;uByte + +)
pBuf[uByte] ^= 0xFF;
nRet = (L_INT)L_PutBitmapRow(&LeadBitmap, pBuf, nRow, LeadBitmap.BytesPerLine);
如果(nRet < 1)
返回nRet;
}
L_ReleaseBitmap (&LeadBitmap);
L_SaveBitmap(MAKE_IMAGE_PATH(TEXT)“Result.BMP”)), &LeadBitmap, FILE_BMP, 24, 0, NULL);
如果(nRet != SUCCESS)
返回nRet;
L_FreeBitmap (&LeadBitmap);
/ /我们不再需要的内存
GlobalUnlock (hBuf);
GlobalFree (hBuf);
返回成功;
}
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗网络查看器net
188宝金博怎么下载
支持的平台上
.NET、Java、Android和iOS/macOS程序集
C API/ c++类库
HTML5 JavaScript库
您的邮件已发送给技术支持!应该有人联系!如果你的事情很紧急,请回来聊天。
聊天时间:
周一至周五,美国东部时间上午8:30至下午6:00
感谢您的反馈!
请再次填写表格,开始新的聊天。
所有代理目前都离线。
聊天时间:
星期一至星期五
美国东部时间上午8:30 -下午6点
如需与我们联系,请填写此表格,我们将通过电子邮件与您联系。