LEADTOOLS (Leadtools assembly)
LEAD Technologies, Inc

RasterBufferResize Class

Example 





Members 
Provides support for resizing image data buffers. .NET support Silverlight support
Object Model
RasterBufferResize Class
Syntax
public class RasterBufferResize 
'Declaration
 
Public Class RasterBufferResize 
'Usage
 
Dim instance As RasterBufferResize
public sealed class RasterBufferResize 
function Leadtools.RasterBufferResize()
public ref class RasterBufferResize 
Example
 
Public Sub RasterBufferResizeExample()
      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_resized.bmp")

      ' Load the source image
      Dim srcImage As RasterImage = codecs.Load(srcFileName)

      Dim destWidth As Integer = srcImage.Width \ 2
      Dim destHeight As Integer = srcImage.Height \ 2

      ' 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)

      ' allocate buffer for one scanline from source image
      Dim scanLine As Byte() = New Byte(srcImage.BytesPerLine - 1) {}

      ' resize it
      Dim bufferResize As RasterBufferResize = New RasterBufferResize()

      ' Initialize the resize process.
      bufferResize.Start(srcImage.Width, srcImage.Height, destImage.Width, destImage.Height)

      srcImage.Access()
      destImage.Access()

      ' Current destination row number
      Dim destRow As Integer = 0
      Dim i As Integer = 0
      Do While i < srcImage.Height
         ' Get a scanline from the source image and resize it
         srcImage.GetRow(i, scanLine, 0, srcImage.BytesPerLine)
         bufferResize.ResizeBuffer(scanLine, 0, i, srcImage.BitsPerPixel)

         ' Output as many or as few rows as ResizeBuffer supplies
         Dim j As Integer = 0
         Do While j < bufferResize.CopyRepetitions
            destImage.SetRow(destRow, scanLine, 0, bufferResize.LineWidth * 3)
            destRow += 1
            j += 1
         Loop
         i += 1
      Loop

      destImage.Release()
      srcImage.Release()

      bufferResize.Stop()

      ' Save the destination image
      codecs.Save(destImage, destFileName, RasterImageFormat.Bmp, 24)

      ' Clean up
      srcImage.Dispose()
      destImage.Dispose()
   End Sub

Public NotInheritable Class LEAD_VARS
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
public void RasterBufferResizeExample()
   {
      RasterCodecs codecs = new RasterCodecs();
      codecs.ThrowExceptionsOnInvalidImages = true;

      string srcFileName = Path.Combine(LEAD_VARS.ImagesDir,"Image1.cmp");
      string destFileName = Path.Combine(LEAD_VARS.ImagesDir,"Image1_resized.bmp");

      // Load the source image
      RasterImage srcImage = codecs.Load(srcFileName);

      int destWidth = srcImage.Width / 2;
      int destHeight = srcImage.Height / 2;

      // Create the destination image
      RasterImage destImage = new RasterImage(
         RasterMemoryFlags.Conventional,
         destWidth,
         destHeight,
         srcImage.BitsPerPixel,
         srcImage.Order,
         srcImage.ViewPerspective,
         srcImage.GetPalette(),
         IntPtr.Zero,
         0);

      // allocate buffer for one scanline from source image
      byte[] scanLine = new byte[srcImage.BytesPerLine];

      // resize it
      RasterBufferResize bufferResize = new RasterBufferResize();

      // Initialize the resize process.
      bufferResize.Start(srcImage.Width, srcImage.Height, destImage.Width, destImage.Height);

      srcImage.Access();
      destImage.Access();

      // Current destination row number
      int destRow = 0;
      for(int i = 0; i < srcImage.Height; i++)
      {
         // Get a scanline from the source image and resize it
         srcImage.GetRow(i, scanLine, 0, srcImage.BytesPerLine);
         bufferResize.ResizeBuffer(scanLine, 0, i, srcImage.BitsPerPixel);

         // Output as many or as few rows as ResizeBuffer supplies
         for(int j = 0; j < bufferResize.CopyRepetitions; j++)
         {
            destImage.SetRow(destRow, scanLine, 0, bufferResize.LineWidth * 3);
            destRow++;
         }
      }

      destImage.Release();
      srcImage.Release();

      bufferResize.Stop();

      // Save the destination image
      codecs.Save(destImage, destFileName, RasterImageFormat.Bmp, 24);

      // Clean up
      srcImage.Dispose();
      destImage.Dispose();
   }

static class LEAD_VARS
{
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
public void RasterBufferResizeExample(RasterImage srcImage, Stream destStream)
{
   RasterCodecs codecs = new RasterCodecs();
   codecs.ThrowExceptionsOnInvalidImages = true;
   int destWidth = srcImage.Width / 2;
   int destHeight = srcImage.Height / 2;

   // Create the destination image
   RasterImage destImage = new RasterImage(
      RasterMemoryFlags.Conventional,
      destWidth,
      destHeight,
      srcImage.BitsPerPixel,
      srcImage.Order,
      srcImage.ViewPerspective,
      srcImage.GetPalette(),
      null,
      0);

   // allocate buffer for one scanline from source image
   byte[] scanLine = new byte[srcImage.BytesPerLine];

   // resize it
   RasterBufferResize bufferResize = new RasterBufferResize();

   // Initialize the resize process.
   bufferResize.Start(srcImage.Width, srcImage.Height, destImage.Width, destImage.Height);

   srcImage.Access();
   destImage.Access();

   // Current destination row number
   int destRow = 0;
   for(int i = 0; i < srcImage.Height; i++)
   {
      // Get a scanline from the source image and resize it
      srcImage.GetRow(i, scanLine, 0, srcImage.BytesPerLine);
      bufferResize.ResizeBuffer(scanLine, 0, i, srcImage.BitsPerPixel);

      // Output as many or as few rows as ResizeBuffer supplies
      for(int j = 0; j < bufferResize.CopyRepetitions; j++)
      {
         destImage.SetRow(destRow, scanLine, 0, bufferResize.LineWidth * 3);
         destRow++;
      }
   }

   destImage.Release();
   srcImage.Release();

   bufferResize.Stop();

   // Save the destination image
   codecs.Save(destImage, destStream, RasterImageFormat.Bmp, 24);

   // Clean up
   srcImage.Dispose();
   destImage.Dispose();
}
Public Sub RasterBufferResizeExample(ByVal srcImage As RasterImage, ByVal destStream As Stream)
   Dim codecs As RasterCodecs = New RasterCodecs()
   codecs.ThrowExceptionsOnInvalidImages = True
   Dim destWidth As Integer = srcImage.Width / 2
   Dim destHeight As Integer = srcImage.Height / 2

   ' Create the destination image
   Dim destImage As RasterImage = New RasterImage(RasterMemoryFlags.Conventional, destWidth, destHeight, srcImage.BitsPerPixel, srcImage.Order, srcImage.ViewPerspective, srcImage.GetPalette(), Nothing, 0)

   ' allocate buffer for one scanline from source image
   Dim scanLine As Byte() = New Byte(srcImage.BytesPerLine - 1){}

   ' resize it
   Dim bufferResize As RasterBufferResize = New RasterBufferResize()

   ' Initialize the resize process.
   bufferResize.Start(srcImage.Width, srcImage.Height, destImage.Width, destImage.Height)

   srcImage.Access()
   destImage.Access()

   ' Current destination row number
   Dim destRow As Integer = 0
   Dim i As Integer = 0
   Do While i < srcImage.Height
      ' Get a scanline from the source image and resize it
      srcImage.GetRow(i, scanLine, 0, srcImage.BytesPerLine)
      bufferResize.ResizeBuffer(scanLine, 0, i, srcImage.BitsPerPixel)

      ' Output as many or as few rows as ResizeBuffer supplies
      Dim j As Integer = 0
      Do While j < bufferResize.CopyRepetitions
         destImage.SetRow(destRow, scanLine, 0, bufferResize.LineWidth * 3)
         destRow += 1
         j += 1
      Loop
      i += 1
   Loop

   destImage.Release()
   srcImage.Release()

   bufferResize.Stop()

   ' Save the destination image
   codecs.Save(destImage, destStream, RasterImageFormat.Bmp, 24)

   ' Clean up
   srcImage.Dispose()
   destImage.Dispose()
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

RasterBufferResize Members
Leadtools Namespace

 

 


Products | Support | Contact Us | Copyright Notices

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