LEADTOOLS (Leadtools assembly)
LEAD Technologies, Inc

RasterImageResize Class

Example 





Members 
Provides support for resizing images. .NET support Silverlight support
Object Model
RasterImageResize Class
Syntax
public class RasterImageResize 
'Declaration
 
Public Class RasterImageResize 
'Usage
 
Dim instance As RasterImageResize
public sealed class RasterImageResize 
function Leadtools.RasterImageResize()
public ref class RasterImageResize 
Remarks
This class supports changing the color order, bits per pixel and/or palette, during the resize operation.
Example
 
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
      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()
   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
public void RasterImageResizeExample()
   {
      RasterCodecs codecs = new RasterCodecs();
      codecs.ThrowExceptionsOnInvalidImages = true;

      string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp");
      string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "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();
   }

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

static class LEAD_VARS
{
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
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);
}
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: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also

Reference

RasterImageResize Members
Leadtools Namespace

 

 


Products | Support | Contact Us | Copyright Notices

© 2006-2012 All Rights Reserved. LEAD Technologies, Inc.