#include "l_bitmap.h"
L_LTKRN_API L_INT L_GetPixelData(pBitmap, pData, nRow, nCol, uBytes)
Gets the data of the specified pixel. No transformations are performed on the pixel data.
Pointer to the bitmap handle referencing the bitmap.
Pointer to a buffer to be updated with the pixel data. This buffer should be able to store uBytes
bytes.
The row number of the pixel. This is a zero-based value.
The column number of the pixel. This is a zero-based value.
Size of the buffer pointed to by pData
. The size should be large enough to contain the data for the pixel. The minimum size can be calculated with the following formula: (pBitmap
->BitsPerPixel + 7) / 8.
Value | Meaning |
---|---|
SUCCESS | The function was successful. |
< 1 | An error occurred. Refer to Return Codes. |
The bitmap's memory must be locked when you use this function. Normally, call L_AccessBitmap to lock the memory before starting an operation that uses this function and then call L_ReleaseBitmap when the operation is finished.
This function should be called only for 8, 16, 24, 32, 48 and 64-bit bitmaps. Here is how it works:
For 8-bit bitmaps, this function will retrieve the palette index for the specified pixel.
For 16-bit bitmaps, the function will retrieve the 2-byte value that forms the pixel.
For grayscale 16-bit bitmaps, the data will contain the gray value. LowBit and HighBit members of the BITMAPHANDLE structure indicate the valid pixel data.
For color 16-bit bitmaps, the data contains packed 5-bit R, G and B values. The high bit contains the alpha information. The Order member in BITMAPHANDLE structure determines whether the data is RGB or BGR.
For 24-bit bitmaps, the function will retrieve the 3 bytes containing the pixel color. The Order member in BITMAPHANDLE structure determines whether the data is RGB or BGR.
For 32-bit bitmaps, the function will retrieve the 4 bytes value that forms the pixel.
For grayscale 32-bit bitmaps, the 4 bytes will contain the entire 32-bit gray value.
For color 32-bit bitmaps, the first 3 bytes will contain the pixel color. The Order member in BITMAPHANDLE structure determines whether the data in the first 3 bytes is RGB or BGR. The 4th byte will contain the alpha channel information.
For 48-bit bitmaps, the function will retrieve the 6 bytes containing the pixel color. The Order member in BITMAPHANDLE structure determines whether the data is RGB or BGR. Each color component is stored as a 16-bit value, where 0 corresponds to black and 0xFFFF corresponds to full white.
For 64-bit bitmaps, the function will retrieve the 8 bytes containing the pixel color and alpha information. The Order member in BITMAPHANDLE structure determines whether the data in the first 6 bytes is RGB or BGR. Each color component is stored as a 16-bit value, where 0 corresponds to black and 0xFFFF corresponds to full white. The last two bytes contain the alpha information (also stored as a short value).
This function will return an error if uBytes
is smaller than it should be. The minimum value for uBytes is indicated in a formula above.
Required DLLs and Libraries
Win32, x64, Linux.
This example uses L_GetPixelData and L_PutPixelData to swap the R and G values for a particular pixel. This example will work only with 24, 32, 48 and 64-bit bitmaps.
L_INT GetPixelDataExample(pBITMAPHANDLE pBitmap,
L_INT nRow,
L_INT nCol)
{
L_INT nRet;
L_UINT uVal;
if(pBitmap->BitsPerPixel == 24 || pBitmap->BitsPerPixel == 32)
{
L_UCHAR aPixel[4]; // make it large enough for both bitmap types
L_AccessBitmap(pBitmap);
nRet = L_GetPixelData(pBitmap, aPixel, nRow, nCol, sizeof(aPixel));
L_ReleaseBitmap(pBitmap);
if(nRet != SUCCESS)
return nRet;
// swap the R and B values
uVal = aPixel[0]; aPixel[0] = aPixel[2]; aPixel[2] = (L_UCHAR)uVal;
L_AccessBitmap(pBitmap);
// put back the transformed pixel
nRet = L_PutPixelData(pBitmap, aPixel, nRow, nCol, sizeof(aPixel));
L_ReleaseBitmap(pBitmap);
if(nRet != SUCCESS)
return nRet;
}
else if(pBitmap->BitsPerPixel == 48 || pBitmap->BitsPerPixel == 64)
{
L_UINT16 aPixel[4]; // make it large enough for both bitmap types
L_AccessBitmap(pBitmap);
nRet = L_GetPixelData(pBitmap, aPixel, nRow, nCol, sizeof(aPixel));
L_ReleaseBitmap(pBitmap);
if(nRet != SUCCESS)
return nRet;
// swap the R and B values
uVal = aPixel[0]; aPixel[0] = aPixel[2]; aPixel[2] = (L_UINT16)uVal;
L_AccessBitmap(pBitmap);
// put back the transformed pixel
nRet = L_PutPixelData(pBitmap, aPixel, nRow, nCol, sizeof(aPixel));
L_ReleaseBitmap(pBitmap);
if(nRet != SUCCESS)
return nRet;
}
return SUCCESS;
}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document