LBitmapBase::GetPixelData

#include "ltwrappr.h"

virtual L_INT LBitmapBase::GetPixelData(pData, nRow, nCol, nBytes)

Gets the data of the specified pixel. No transformations are performed on the pixel data.

Parameters

L_VOID *pData

Pointer to a buffer to be updated with the pixel data. This buffer should be able to store nBytes bytes.

L_INT nRow

The row number of the pixel.

L_INT nCol

The column number of the pixel.

L_INT nBytes

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: (LBitmapBase::GetBitsPerPixel + 7) / 8.

Returns

Value Meaning
SUCCESS The function was successful.
< 1 An error occurred. Refer to Return Codes.

Comments

This function should be called only for 8, 16, 24, 32, 48 and 64-bit bitmaps:

This function will return an error if nBytes is smaller than it should be. The minimum value for nSize is indicated in a formula above.

Required DLLs and Libraries

Platforms

Win32, x64.

See Also

Functions

Topics

Example

L_INT LBitmapBase__GetPixelDataExample(LBitmapBase & Bitmap, L_TCHAR * pszFile, L_INT nRow,  
                                                        L_INT nCol) 
{ 
   L_INT nRet; 
   L_UINT uTempValue; 
 
   nRet =Bitmap.Load(pszFile); 
   if(nRet !=SUCCESS) 
      return nRet; 
 
   if (Bitmap.GetBitsPerPixel() == 24 ||  
       Bitmap.GetBitsPerPixel() == 32) 
   { 
      L_UCHAR aPixel[4]; // Make it large enough for both bitmap types 
       
      nRet =Bitmap.GetPixelData(aPixel, nRow, nCol, sizeof(aPixel)); 
      if(nRet !=SUCCESS) 
         return nRet; 
 
      // Swap the red and blue values 
      uTempValue = aPixel[0]; 
      aPixel[0] = aPixel[2]; 
      aPixel[2] = (L_UCHAR) uTempValue; 
 
      // Put back the transformed pixel 
      nRet =Bitmap.PutPixelData(aPixel, nRow, nCol, sizeof(aPixel)); 
      if(nRet !=SUCCESS) 
         return nRet; 
   } 
   else if (Bitmap.GetBitsPerPixel() == 48 ||  
            Bitmap.GetBitsPerPixel() == 64) 
   { 
      L_UINT16 aPixel[4]; // Make it large enough for both bitmap types 
       
      nRet =Bitmap.GetPixelData(aPixel, nRow, nCol, sizeof(aPixel)); 
      if(nRet !=SUCCESS) 
         return nRet; 
 
      // Swap the red and blue values 
      uTempValue = aPixel[0]; 
      aPixel[0] = aPixel[2]; 
      aPixel[2] = (L_UINT16) uTempValue; 
 
      // Put back the transformed pixel 
      nRet =Bitmap.PutPixelData(aPixel, nRow, nCol, sizeof(aPixel)); 
      if(nRet !=SUCCESS) 
         return nRet; 
   } 
   else 
   { 
      MessageBox(NULL, TEXT("This example works only with 24-, 32-, 48- and 64-bit bitmaps!"),  
                 TEXT("Testing"), MB_OK); 
      return FAILURE; 
   } 
   return SUCCESS; 
} 
Help Version 21.0.2021.4.8
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2021 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS Raster Imaging C++ Class Library Help