←Select platform

RasterImageResize Class

Summary

Provides support for resizing images.

Syntax
C#
VB
C++
public class RasterImageResize 
Public Class RasterImageResize  
public ref class RasterImageResize  

Remarks

This class supports changing the color order, bits per pixel and/or palette, during the resize operation.

Example

This sample loads an image and uses the RasterImageResize class to resize it to half its size.

C#
VB
using Leadtools; 
using Leadtools.Codecs; 
using LeadtoolsExamples.Common; 
 
public void RasterImageResizeExample() 
{ 
   string srcFileName = Path.Combine(ImagesPath.Path, "Image1.cmp"); 
   string destFileName = Path.Combine(ImagesPath.Path, "Image1_RasterImageResize.bmp"); 
 
   using (RasterCodecs codecs = new RasterCodecs()) 
   { 
      // Load the source image 
      using (RasterImage srcImage = codecs.Load(srcFileName)) 
      { 
         // We will resize to half the original size 
         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)) 
         { 
            RasterImageResize resize = new RasterImageResize(); 
 
            // Add Event Handler 
            resize.Resize += new EventHandler<RasterImageResizeEventArgs>(resize_Resize); 
 
            byte[] buffer = new byte[destImage.BytesPerLine]; 
 
            // Start the resize process 
            resize.Start( 
               srcImage, 
               destWidth, 
               destHeight, 
               srcImage.BitsPerPixel, 
               srcImage.Order, 
               srcImage.DitheringMethod, 
               RasterSizeFlags.None, 
               srcImage.GetPalette()); 
 
            destImage.Access(); 
            // get the rows for the resized image, one by one 
            for (int row = 0; row < destImage.Height; row++) 
            { 
               resize.ResizeBuffer(row, 0, buffer, 0, destImage.BytesPerLine); 
               destImage.SetRow(row, buffer, 0, destImage.BytesPerLine); 
            } 
            destImage.Release(); 
            resize.Stop(); 
 
            // Save the destination image 
            codecs.Save(destImage, destFileName, RasterImageFormat.Bmp, 24); 
         } 
      } 
   } 
} 
 
private void resize_Resize(object sender, RasterImageResizeEventArgs e) 
{ 
   // e.Row should ALWAYS be less than e.Image.Height 
   if (e.Row >= e.Image.Height) 
   { 
      e.Cancel = true; // abort the resize 
      return; 
   } 
 
   byte[] buffer = new byte[e.Bytes]; 
   e.Image.Access(); 
   e.Image.GetRowColumn(e.Row, e.Column, buffer, 0, e.Bytes); 
   e.Image.Release(); 
   Marshal.Copy(buffer, 0, e.Buffer, e.Bytes); 
   Console.WriteLine("{0}, {1}", e.Row, e.Column); 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
 
Public Sub RasterImageResizeExample() 
   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_RasterImageResize.bmp") 
 
   ' Load the source image 
   Dim srcImage As RasterImage = codecs.Load(srcFileName) 
 
   Dim resize As RasterImageResize = New RasterImageResize() 
 
   ' Add Handler 
   AddHandler resize.Resize, AddressOf resize_Resize 
 
   ' We will resize to half the original size 
   Dim destWidth As Integer = srcImage.Width \ 2 
   Dim destHeight As Integer = srcImage.Height \ 2 
 
   ' Start the resize process 
   resize.Start(srcImage, destWidth, destHeight, srcImage.BitsPerPixel, srcImage.Order, 
                srcImage.DitheringMethod, RasterSizeFlags.None, srcImage.GetPalette()) 
 
   ' 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) 
 
   Dim buffer As Byte() = New Byte(destImage.BytesPerLine - 1) {} 
 
   ' get the rows for the resized image, one by one 
   Dim row As Integer = 0 
   srcImage.Access() 
   destImage.Access() 
   Do While row < destImage.Height 
      resize.ResizeBuffer(row, 0, buffer, 0, destImage.BytesPerLine) 
      destImage.SetRow(row, buffer, 0, destImage.BytesPerLine) 
      row += 1 
   Loop 
   srcImage.Release() 
   destImage.Release() 
 
   resize.Stop() 
 
   ' save the destination image 
   codecs.Save(destImage, destFileName, RasterImageFormat.Bmp, 24) 
 
   ' clean up 
   srcImage.Dispose() 
   destImage.Dispose() 
End Sub 
 
Private Sub resize_Resize(ByVal sender As Object, ByVal e As RasterImageResizeEventArgs) 
   ' e.Row should ALWAYS be less than e.Image.Height 
   If e.Row >= e.Image.Height Then 
      e.Cancel = True ' abort the resize 
      Return 
   End If 
 
   Dim buffer As Byte() = New Byte(e.Bytes - 1) {} 
   e.Image.Access() 
   e.Image.GetRowColumn(e.Row, e.Column, buffer, 0, e.Bytes) 
   e.Image.Release() 
   Marshal.Copy(buffer, 0, e.Buffer, e.Bytes) 
   Console.WriteLine("{0}, {1}", e.Row, e.Column) 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" 
End Class 
c#[Silverlight C# Example] 
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.Examples; 
 
public void RasterImageResizeExample(RasterImage srcImage, Stream destStream) 
{ 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
 
   RasterImageResize resize = new RasterImageResize(); 
 
   // Add Handler 
   resize.Resize += new EventHandler<RasterImageResizeEventArgs>(resize_Resize); 
 
   // We will resize to half the original size 
   int destWidth = srcImage.Width / 2; 
   int destHeight = srcImage.Height / 2; 
 
   // Start the resize process 
   resize.Start( 
      srcImage, 
      destWidth, 
      destHeight, 
      srcImage.BitsPerPixel, 
      srcImage.Order, 
      srcImage.DitheringMethod, 
      RasterSizeFlags.None, 
      srcImage.GetPalette()); 
 
   // Create the destination image 
 
   RasterImage destImage = new RasterImage( 
      RasterMemoryFlags.Conventional, 
      destWidth, 
      destHeight, 
      srcImage.BitsPerPixel, 
      srcImage.Order, 
      srcImage.ViewPerspective, 
      srcImage.GetPalette(), 
      null, 
      0); 
 
   byte[] buffer = new byte[destImage.BytesPerLine]; 
 
   // get the rows for the resized image, one by one 
   for (int row = 0; row < destImage.Height; row++) 
   { 
      resize.ResizeBuffer(row, 0, buffer, 0, destImage.BytesPerLine); 
      destImage.SetRow(row, buffer, 0, destImage.BytesPerLine); 
   } 
 
   resize.Stop(); 
 
   // save the destination image 
   codecs.Save(destImage, destStream, RasterImageFormat.Bmp, 24); 
 
   // clean up 
   srcImage.Dispose(); 
   destImage.Dispose(); 
} 
 
private void resize_Resize(object sender, RasterImageResizeEventArgs e) 
{ 
   // e.Row should ALWAYS be less than e.Image.Height 
   if (e.Row >= e.Image.Height) 
   { 
      e.Cancel = true; // abort the resize 
      return; 
   } 
 
   byte[] buffer = new byte[e.Bytes]; 
   e.Image.Access(); 
   e.Image.GetRowColumn(e.Row, e.Column, buffer, 0, e.Bytes); 
   e.Image.Release(); 
   Buffer.BlockCopy(buffer, 0, e.BufferArray, 0, e.Bytes); 
   Console.WriteLine("{0}, {1}", e.Row, e.Column); 
} 
vb[Silverlight VB Example] 
Imports Leadtools 
Imports Leadtools.Codecs 
 
Public Sub RasterImageResizeExample(ByVal srcImage As RasterImage, ByVal destStream As Stream) 
   Dim codecs As RasterCodecs = New RasterCodecs() 
   codecs.ThrowExceptionsOnInvalidImages = True 
 
   Dim resize As RasterImageResize = New RasterImageResize() 
 
   ' Add Handler 
   AddHandler resize.Resize, AddressOf resize_Resize 
 
   ' We will resize to half the original size 
   Dim destWidth As Integer = srcImage.Width / 2 
   Dim destHeight As Integer = srcImage.Height / 2 
 
   ' Start the resize process 
   resize.Start(srcImage, destWidth, destHeight, srcImage.BitsPerPixel, srcImage.Order, srcImage.DitheringMethod, RasterSizeFlags.None, srcImage.GetPalette()) 
 
   ' Create the destination image 
 
   Dim destImage As RasterImage = New RasterImage(RasterMemoryFlags.Conventional, destWidth, destHeight, srcImage.BitsPerPixel, srcImage.Order, srcImage.ViewPerspective, srcImage.GetPalette(), Nothing, 0) 
 
   Dim buffer As Byte() = New Byte(destImage.BytesPerLine - 1) {} 
 
   ' get the rows for the resized image, one by one 
   Dim row As Integer = 0 
   Do While row < destImage.Height 
      resize.ResizeBuffer(row, 0, buffer, 0, destImage.BytesPerLine) 
      destImage.SetRow(row, buffer, 0, destImage.BytesPerLine) 
      row += 1 
   Loop 
 
   resize.Stop() 
 
   ' save the destination image 
   codecs.Save(destImage, destStream, RasterImageFormat.Bmp, 24) 
 
   ' clean up 
   srcImage.Dispose() 
   destImage.Dispose() 
End Sub 
 
Private Sub resize_Resize(ByVal sender As Object, ByVal e As RasterImageResizeEventArgs) 
   ' e.Row should ALWAYS be less than e.Image.Height 
   If e.Row >= e.Image.Height Then 
      e.Cancel = True ' abort the resize 
      Return 
   End If 
 
   Dim buffer As Byte() = New Byte(e.Bytes - 1) {} 
   e.Image.Access() 
   e.Image.GetRowColumn(e.Row, e.Column, buffer, 0, e.Bytes) 
   e.Image.Release() 
   System.Buffer.BlockCopy(buffer, 0, e.BufferArray, 0, e.Bytes) 
   Console.WriteLine("{0}, {1}", e.Row, e.Column) 
End Sub 

Requirements

Target Platforms

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

Leadtools Assembly