Resizes the image from an existing bitmap, and puts the resized image into a destination bitmap, leaving the original bitmap intact.


#include "l_bitmap.h"

L_LTKRN_API L_INT L_ResizeBitmap(pBitmapSrc, pDestBitmap, uFlags)



Pointer to the bitmap handle referencing the source bitmap.


Pointer to the bitmap handle referencing the destination bitmap to contain the new resized image.

L_UINT uFlags

Flags that determine resizing options. Possible values are:

Value Meaning
SIZE_NORMAL [0x0000] Resize normally.
SIZE_FAVORBLACK [0x0001] (Document and Medical Imaging toolkits) Preserve black objects when making the image smaller. This option affects only 1-bit, black-and-white images, where it prevents the disappearance of thin lines. You can use a bitwise OR ( ) to combine this flag with another one. For example, SIZE_RESAMPLE | SIZE_FAVORBLACK causes color images to be resampled, but applies the favor-black option to 1-bit, black-and-white images.
SIZE_RESAMPLE [0x0002] Use linear interpolation and averaging to produce a higher-quality image.
SIZE_BICUBIC [0x0004] Use bicubic interpolation and averaging to produce a higher quality image. This is slower than SIZE_RESAMPLE.
SIZE_SCALETOGRAY [0x0008] (Document and Medical Imaging toolkits). Use interpolation to display black and white images using shades of gray when the image is resized. This improves the readability when the image is scaled up or down. The generated image is 8-bit grayscale, so this option should be used only for black and white images.
SIZE_OLD_RESAMPLE [0x0010] Use the old resample algorithm from LEADTOOLS 14.5.
SIZE_PREMULTIPLYALPHA [0x0020] Premultiply the alpha channel values when performing resize.


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


You are responsible for allocating enough storage for the destination bitmap. If only one copy is desired, use the L_SizeBitmap function instead of this one.

If you are working with an 8-bit or less image, before calling this function, you must ensure that both bitmap handles refer to the same palette. To do so, you can use the L_CopyBitmapPalette function to duplicate the palette as follows:

L_CopyBitmapPalette(&DestinationBitmap, &SourceBitmap.hPalette);

To update a status bar or detect a user interrupt during execution of this function, refer to L_SetStatusCallback.

Required DLLs and Libraries


Win32, x64, Linux.

See Also




For complete sample code, refer to the FEATURE1
This example loads a temporary bitmap, and uses L_ResizeBitmap to create a new
bitmap half the size of the original. The example also demonstrates low-level functions for
initializing and allocating a bitmap. The same tasks can be done more efficiently with
high-level functions.
Note that the result is not very good because we resize a dithered image.

L_INT ResizeBitmapExample (L_VOID) 
   L_INT nRet; 
   BITMAPHANDLE   LeadBitmap;          /* Bitmap handle for the final image */ 
   BITMAPHANDLE   TmpBitmap;           /* Bitmap handle for the initial image */ 
   L_INT          NewWidth, NewHeight; /* Resize dimensions */ 
   /* Load the temporary bitmap at 8 bits per pixel so that we can demonstrate 
   how to handle its palette. */ 
   nRet = L_LoadBitmap (MAKE_IMAGE_PATH(TEXT("ImageProcessingDemo\\Image3.cmp")), &TmpBitmap, sizeof(BITMAPHANDLE), 8, ORDER_BGR, NULL, NULL); 
   if(nRet != SUCCESS) 
      return nRet; 
   /* Define the dimensions for resizing */ 
   NewWidth = TmpBitmap.Width / 2; 
   NewHeight = TmpBitmap.Height / 2; 
   /* Initialize the new bitmap handle. */ 
   nRet = L_InitBitmap( &LeadBitmap, sizeof(BITMAPHANDLE), NewWidth, NewHeight, TmpBitmap.BitsPerPixel ); 
   if(nRet != SUCCESS) 
      return nRet; 
   /* Allocate the storage to hold the image data. */ 
   nRet = L_AllocateBitmap( &LeadBitmap, TYPE_CONV ); 
   if(nRet != SUCCESS) 
      return nRet; 
   /* Duplicate the palette */ 
   nRet = L_CopyBitmapPalette(&LeadBitmap, &TmpBitmap); 
   if(nRet != SUCCESS) 
      return nRet; 
   /* Set other useful values in the bitmap handle */ 
   LeadBitmap.ViewPerspective = TmpBitmap.ViewPerspective; 
   LeadBitmap.XResolution = TmpBitmap.XResolution; 
   LeadBitmap.YResolution = TmpBitmap.YResolution; 
   LeadBitmap.Order = TmpBitmap.Order; 
   /* Resize TmpBitmap to create LeadBitmap */ 
   nRet = L_ResizeBitmap (&TmpBitmap, &LeadBitmap, SIZE_NORMAL); 
   if(nRet != SUCCESS) 
      return nRet; 
   nRet = L_SaveBitmap(MAKE_IMAGE_PATH(TEXT("Result.BMP")), &LeadBitmap, FILE_BMP, 0, 0, NULL); 
   if(nRet != SUCCESS) 
      return nRet; 
   /* Free the temporary bitmap */ 
   /* Free the resized bitmap */ 
   return SUCCESS; 

Help Version 22.0.2023.7.11
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS Raster Imaging C API Help

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.