Leadtools Send comments on this topic. | Back to Introduction - All Topics | Help Version 16.5.9.25
RasterImageResize Class
See Also  Members   Example 
Leadtools Namespace : RasterImageResize Class



Provides support for resizing images.

Syntax

Visual Basic (Declaration) 
Public Class RasterImageResize 
Visual Basic (Usage)Copy Code
Dim instance As RasterImageResize
C# 
public class RasterImageResize 
C++/CLI 
public ref class RasterImageResize 

Example

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

Visual BasicCopy Code
Public Sub RasterImageResizeExample()
 RasterCodecs.Startup()
 Dim codecs As RasterCodecs = New RasterCodecs()
 codecs.ThrowExceptionsOnInvalidImages = True

 Dim srcFileName As String = LeadtoolsExamples.Common.ImagesPath.Path + "Image1.cmp"
 Dim destFileName As String = LeadtoolsExamples.Common.ImagesPath.Path + "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
 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, destFileName, RasterImageFormat.Bmp, 24)

 ' clean up
 srcImage.Dispose()
 destImage.Dispose()
 RasterCodecs.Shutdown()
      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
C#Copy Code
public void RasterImageResizeExample() 

   RasterCodecs.Startup(); 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
 
   string srcFileName = LeadtoolsExamples.Common.ImagesPath.Path + "Image1.cmp"; 
   string destFileName = LeadtoolsExamples.Common.ImagesPath.Path + "Image1_RasterImageResize.bmp"; 
 
   // Load the source image 
   RasterImage srcImage = codecs.Load(srcFileName); 
 
   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(), 
      IntPtr.Zero, 
      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, destFileName, RasterImageFormat.Bmp, 24); 
 
   // clean up 
   srcImage.Dispose(); 
   destImage.Dispose(); 
   RasterCodecs.Shutdown(); 

 
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); 
}

Remarks

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

Inheritance Hierarchy

System.Object
   Leadtools.RasterImageResize

Requirements

Target Platforms: Microsoft .NET Framework 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family

See Also