←Select platform

RasterBufferResize Class

Summary

Provides support for resizing image data buffers.

Syntax

C#
VB
C++
public class RasterBufferResize 
Public Class RasterBufferResize  
public ref class RasterBufferResize  

Example

This example will load an image, resizes each line then saves the resized image back to disk.

C#
VB
Silverlight C#
Silverlight VB
using Leadtools; 
using Leadtools.Codecs; 
using LeadtoolsExamples.Common; 
 
public void RasterBufferResizeExample() 
{ 
   string srcFileName = Path.Combine(ImagesPath.Path, "Image1.cmp"); 
   string destFileName = Path.Combine(ImagesPath.Path, "Image1_resized.bmp"); 
 
   using (RasterCodecs codecs = new RasterCodecs()) 
   { 
      codecs.ThrowExceptionsOnInvalidImages = true; 
 
      // Load the source image 
      using (RasterImage srcImage = codecs.Load(srcFileName)) 
      { 
         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)) 
         { 
 
            // 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); 
         } 
      } 
   } 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
 
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 
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.Examples; 
 
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(); 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
 
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

Help Version 19.0.2017.10.19
Products | Support | Contact Us | Copyright Notices
© 1991-2017 LEAD Technologies, Inc. All Rights Reserved.

Leadtools Assembly