L_GetBitmapRow

# include“l_bitmap.h”

L_LTKRN_APIL_SSIZE_TL_GetBitmapRow(pBitmap, pBuffer, nRow, uBytes)

从指定的位图检索行。缓冲区pbuf分应包含未压缩的数据是否pBitmap是否压缩。

参数

pBITMAPHANDLEpBitmap

指向位图句柄的指针,该句柄引用要从中获取行的位图。

L_UCHAR* pbuf

指向保存此函数获取的图像数据的缓冲区的指针。在调用此函数之前,必须分配缓冲区,并且缓冲区必须足够大以容纳图像数据。注意:缓冲区中的数据将被填充到pBitmap- > BytesPerLine。

L_INTnRow

要检索的行号。第一行是0,最后一行比位图高度小1。

L_SIZE_TuBytes

要检索的行中的字节数。要获取整行,请使用位图句柄中的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);返回成功;

栅格成像C API帮助
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领德科技有限公司版权所有。