←Select platform

RasterBufferResize Class

Summary
Provides support for resizing image data buffers.
Syntax
C#
VB
C++
public class RasterBufferResize 
Public Class RasterBufferResize  
public ref class RasterBufferResize  
Example

This example will load an image, resizes each line then saves the resized image back to disk.

C#
VB
using Leadtools; 
using Leadtools.Codecs; 
 
 
public void RasterBufferResizeExample() 
{ 
	string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp"); 
	string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1_resized.bmp"); 
 
	using (RasterCodecs codecs = new RasterCodecs()) 
	{ 
		codecs.ThrowExceptionsOnInvalidImages = true; 
 
		// Load the source image 
		using (RasterImage srcImage = codecs.Load(srcFileName)) 
		{ 
			int destWidth = srcImage.Width / 2; 
			int destHeight = srcImage.Height / 2; 
 
			// Create the destination image 
			using (RasterImage destImage = new RasterImage( 
			   RasterMemoryFlags.Conventional, 
			   destWidth, 
			   destHeight, 
			   srcImage.BitsPerPixel, 
			   srcImage.Order, 
			   srcImage.ViewPerspective, 
			   srcImage.GetPalette(), 
			   IntPtr.Zero, 
			   0)) 
			{ 
 
				// allocate buffer for one scanline from source image 
				byte[] scanLine = new byte[srcImage.BytesPerLine]; 
 
				// resize it 
				RasterBufferResize bufferResize = new RasterBufferResize(); 
 
				// Initialize the resize process. 
				bufferResize.Start(srcImage.Width, srcImage.Height, destImage.Width, destImage.Height); 
 
				srcImage.Access(); 
				destImage.Access(); 
 
				// Current destination row number 
				int destRow = 0; 
				for (int i = 0; i < srcImage.Height; i++) 
				{ 
					// Get a scanline from the source image and resize it 
					srcImage.GetRow(i, scanLine, 0, srcImage.BytesPerLine); 
					bufferResize.ResizeBuffer(scanLine, 0, i, srcImage.BitsPerPixel); 
 
					// Output as many or as few rows as ResizeBuffer supplies 
					for (int j = 0; j < bufferResize.CopyRepetitions; j++) 
					{ 
						destImage.SetRow(destRow, scanLine, 0, bufferResize.LineWidth * 3); 
						destRow++; 
					} 
				} 
 
				destImage.Release(); 
				srcImage.Release(); 
 
				bufferResize.Stop(); 
 
				// Save the destination image 
				codecs.Save(destImage, destFileName, RasterImageFormat.Bmp, 24); 
			} 
		} 
	} 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS21\Resources\Images"; 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
 
Public Sub RasterBufferResizeExample() 
   Dim codecs As RasterCodecs = New RasterCodecs() 
   codecs.ThrowExceptionsOnInvalidImages = True 
 
   Dim srcFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp") 
   Dim destFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Image1_resized.bmp") 
 
   ' Load the source image 
   Dim srcImage As RasterImage = codecs.Load(srcFileName) 
 
   Dim destWidth As Integer = srcImage.Width \ 2 
   Dim destHeight As Integer = srcImage.Height \ 2 
 
   ' Create the destination image 
   Dim destImage As RasterImage = New RasterImage( 
                                  RasterMemoryFlags.Conventional, 
                                  destWidth, destHeight, srcImage.BitsPerPixel, srcImage.Order, 
                                  srcImage.ViewPerspective, srcImage.GetPalette(), IntPtr.Zero, 0) 
 
   ' allocate buffer for one scanline from source image 
   Dim scanLine As Byte() = New Byte(srcImage.BytesPerLine - 1) {} 
 
   ' resize it 
   Dim bufferResize As RasterBufferResize = New RasterBufferResize() 
 
   ' Initialize the resize process. 
   bufferResize.Start(srcImage.Width, srcImage.Height, destImage.Width, destImage.Height) 
 
   srcImage.Access() 
   destImage.Access() 
 
   ' Current destination row number 
   Dim destRow As Integer = 0 
   Dim i As Integer = 0 
   Do While i < srcImage.Height 
      ' Get a scanline from the source image and resize it 
      srcImage.GetRow(i, scanLine, 0, srcImage.BytesPerLine) 
      bufferResize.ResizeBuffer(scanLine, 0, i, srcImage.BitsPerPixel) 
 
      ' Output as many or as few rows as ResizeBuffer supplies 
      Dim j As Integer = 0 
      Do While j < bufferResize.CopyRepetitions 
         destImage.SetRow(destRow, scanLine, 0, bufferResize.LineWidth * 3) 
         destRow += 1 
         j += 1 
      Loop 
      i += 1 
   Loop 
 
   destImage.Release() 
   srcImage.Release() 
 
   bufferResize.Stop() 
 
   ' Save the destination image 
   codecs.Save(destImage, destFileName, RasterImageFormat.Bmp, 24) 
 
   ' Clean up 
   srcImage.Dispose() 
   destImage.Dispose() 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const ImagesDir As String = "C:\LEADTOOLS21\Resources\Images" 
End Class 
Requirements

Target Platforms

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

Leadtools Assembly