Error processing SSI file
LEADTOOLS (Leadtools assembly)

Show in webframe

RasterImageResize Class








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

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

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;

      
public async Task RasterImageResizeExample()
{
   RasterCodecs codecs = new RasterCodecs();
   codecs.ThrowExceptionsOnInvalidImages = true;
   string srcFileName = @"Assets\Image1.cmp";
   string destFileName = @"Image1_RasterImageResize.bmp";

   // Load the source image
   StorageFile loadFile = await Tools.AppInstallFolder.GetFileAsync(srcFileName);
   ILeadStream loadStream = LeadStreamFactory.Create(loadFile);
   RasterImage srcImage = await codecs.LoadAsync(loadStream, 24, CodecsLoadByteOrder.Bgr, 1, 1);
   Assert.IsTrue(srcImage.BitsPerPixel == 24);

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

   Windows.Storage.Streams.Buffer buffer = new Windows.Storage.Streams.Buffer((uint)destImage.BytesPerLine);

   destImage.AccessData();

   // 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.ReleaseData();
   resize.Stop();

   // save the destination image
   StorageFile saveFile = await Tools.AppLocalFolder.CreateFileAsync(destFileName);
   ILeadStream saveStream = LeadStreamFactory.Create(saveFile);
   await codecs.SaveAsync(destImage, saveStream, 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;
   }

   Windows.Storage.Streams.Buffer buffer = new Windows.Storage.Streams.Buffer((uint)e.Bytes);

   e.Image.AccessData();
   e.Image.GetRowColumn(e.Row, e.Column, buffer, 0, e.Bytes);
   e.Image.ReleaseData();
   Marshal.Copy(buffer, 0, e.Buffer, e.Bytes);
   Debug.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

Error processing SSI file