LEADTOOLS (Leadtools assembly)

RasterImageResize Class

Show in webframe
Example 







Members 
Provides support for resizing images.
Object Model
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
Copy Code  
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
   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
using Leadtools;
using Leadtools.Codecs;

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

See Also

Reference

RasterImageResize Members
Leadtools Namespace

 

 


Products | Support | Contact Us | Copyright Notices

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