←Select platform

CalculateConvertSize Method

Summary

Calculates the size required for output buffer.

Syntax
C#
VB
C++
public static int CalculateConvertSize( 
   int inWidth, 
   int inBitsPerPixel, 
   int outWidth, 
   int outBitsPerPixel 
) 
Public Shared Function CalculateConvertSize( _ 
   ByVal inWidth As Integer, _ 
   ByVal inBitsPerPixel As Integer, _ 
   ByVal outWidth As Integer, _ 
   ByVal outBitsPerPixel As Integer _ 
) As Integer 
public: 
static int CalculateConvertSize(  
   int inWidth, 
   int inBitsPerPixel, 
   int outWidth, 
   int outBitsPerPixel 
)  

Parameters

inWidth
Width in pixels of the input image data.

inBitsPerPixel
BitsPerPixel of the input image data.

outWidth
Width in pixels of the desired output image data.

outBitsPerPixel
BitsPerPixel of the desired output image data.

Return Value

The size in bytes of the required output buffer.

Remarks

Use this method to calculate the required size of the output buffer for image data conversions.

Example

This example loads an image at 24 bits per pixel, and creates a new image at 4 bits per pixel, and then uses the Convert method to convert data from 24 bits per pixel to 4 bits per pixel.

C#
VB
using Leadtools; 
using Leadtools.Codecs; 
using LeadtoolsExamples.Common; 
 
public void CalculateConvertSizeExample() 
{ 
   string srcFileName = Path.Combine(ImagesPath.Path, "Image1.cmp"); 
   string destFileName = Path.Combine(ImagesPath.Path, "Image1_4bits.bmp"); 
 
   using (RasterCodecs codecs = new RasterCodecs()) 
   { 
      codecs.ThrowExceptionsOnInvalidImages = true; 
 
      // Load the image, at 24 bit per pixel. 
      RasterImage srcImage = codecs.Load(srcFileName, 24, CodecsLoadByteOrder.Bgr, 1, 1); 
      Assert.IsNotNull(srcImage); 
      Assert.IsTrue(srcImage.BitsPerPixel == 24); 
 
      // Create a new 4-bit image. 
      using (RasterImage destImage = new RasterImage( 
         RasterMemoryFlags.Conventional, 
         srcImage.Width, 
         srcImage.Height, 
         4, 
         srcImage.Order, 
         srcImage.ViewPerspective, 
         srcImage.GetPalette(), 
         IntPtr.Zero, 
         0)) 
      { 
         Assert.IsNotNull(destImage); 
         Assert.IsTrue(destImage.BitsPerPixel == 4); 
 
         int bufferSize = RasterBufferConverter.CalculateConvertSize( 
            srcImage.Width, 
            srcImage.BitsPerPixel, 
            destImage.Width, 
            destImage.BitsPerPixel); 
 
         // Allocate the buffer in unmanaged memory 
         IntPtr buffer = Marshal.AllocHGlobal(bufferSize); 
         Assert.IsFalse(buffer == IntPtr.Zero); 
 
         // Process each row from srcImage to destImage. 
         srcImage.Access(); 
         destImage.Access(); 
 
         for (int i = 0; i < srcImage.Height; i++) 
         { 
            srcImage.GetRow(i, buffer, srcImage.BytesPerLine); 
            RasterBufferConverter.Convert( 
               buffer, 
               srcImage.Width, 
               srcImage.BitsPerPixel, 
               destImage.BitsPerPixel, 
               srcImage.Order, 
               destImage.Order, 
               null, 
               null, 
               0, 
               8, 
               0, 
               RasterConvertBufferFlags.None); 
            destImage.SetRow(i, buffer, destImage.BytesPerLine); 
         } 
 
         destImage.Release(); 
         srcImage.Release(); 
 
         // Save the destination image back to disk 
         codecs.Save(destImage, destFileName, RasterImageFormat.Bmp, 4); 
 
         // Clean up 
         Marshal.FreeHGlobal(buffer); 
      } 
   } 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
 
Public Sub CalculateConvertSizeExample() 
   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_4bits.bmp") 
 
   ' Load the image, at 24 bit per pixel. 
   Dim srcImage As RasterImage = codecs.Load(srcFileName, 24, CodecsLoadByteOrder.Bgr, 1, 1) 
   Debug.Assert(srcImage.BitsPerPixel = 24) 
 
   ' Create a new 4-bit image. 
   Dim destImage As RasterImage = New RasterImage( 
                                  RasterMemoryFlags.Conventional, 
                                  srcImage.Width, 
                                  srcImage.Height, 
                                  4, 
                                  srcImage.Order, 
                                  srcImage.ViewPerspective, 
                                  srcImage.GetPalette(), 
                                  IntPtr.Zero, 
                                  0) 
   Debug.Assert(destImage.BitsPerPixel = 4) 
 
   Dim bufferSize As Integer = RasterBufferConverter.CalculateConvertSize( 
      srcImage.Width, srcImage.BitsPerPixel, destImage.Width, destImage.BitsPerPixel) 
 
   ' Allocate the buffer in unmanaged memory 
   Dim buffer As IntPtr = Marshal.AllocHGlobal(bufferSize) 
 
   ' Process each row from srcImage to destImage. 
   srcImage.Access() 
   destImage.Access() 
 
   Dim i As Integer = 0 
   Do While i < srcImage.Height 
      srcImage.GetRow(i, buffer, srcImage.BytesPerLine) 
      RasterBufferConverter.Convert(buffer, srcImage.Width, srcImage.BitsPerPixel, destImage.BitsPerPixel, srcImage.Order, 
                                    destImage.Order, Nothing, Nothing, 0, 8, 0, RasterConvertBufferFlags.None) 
      destImage.SetRow(i, buffer, destImage.BytesPerLine) 
      i += 1 
   Loop 
 
   destImage.Release() 
   srcImage.Release() 
 
   ' Save the destination image back to disk 
   codecs.Save(destImage, destFileName, RasterImageFormat.Bmp, 4) 
 
   ' Clean up 
   Marshal.FreeHGlobal(buffer) 
   srcImage.Dispose() 
   destImage.Dispose() 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" 
End Class 
c#[Silverlight C# Example] 
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.Examples; 
 
public void CalculateConvertSizeExample(RasterImage srcImage, Stream destStream) 
{ 
   // srcImage should be 24 bits per pixel. 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
 
   // Create a new 4-bit image. 
   RasterImage destImage = new RasterImage( 
      RasterMemoryFlags.Conventional, 
      srcImage.Width, 
      srcImage.Height, 
      4, 
      srcImage.Order, 
      srcImage.ViewPerspective, 
      srcImage.GetPalette(), 
      null, 
      0); 
   Debug.Assert(destImage.BitsPerPixel == 4); 
 
   int bufferSize = RasterBufferConverter.CalculateConvertSize( 
      srcImage.Width, 
      srcImage.BitsPerPixel, 
      destImage.Width, 
      destImage.BitsPerPixel); 
 
   // Allocate the buffer 
   byte[] buffer = new byte[bufferSize]; 
 
   // Process each row from srcImage to destImage. 
   srcImage.Access(); 
   destImage.Access(); 
 
   for (int i = 0; i < srcImage.Height; i++) 
   { 
      srcImage.GetRow(i, buffer, 0, srcImage.BytesPerLine); 
      RasterBufferConverter.Convert( 
         buffer, 
         0, 
         srcImage.Width, 
         srcImage.BitsPerPixel, 
         destImage.BitsPerPixel, 
         srcImage.Order, 
         destImage.Order, 
         null, 
         null, 
         0, 
         8, 
         0, 
         RasterConvertBufferFlags.None); 
      destImage.SetRow(i, buffer, 0, destImage.BytesPerLine); 
   } 
 
   destImage.Release(); 
   srcImage.Release(); 
 
   // Save the destination image back to disk 
   codecs.Save(destImage, destStream, RasterImageFormat.Bmp, 4); 
 
   // Clean up 
   srcImage.Dispose(); 
   destImage.Dispose(); 
} 
vb[Silverlight VB Example] 
Imports Leadtools 
Imports Leadtools.Codecs 
 
Public Sub CalculateConvertSizeExample(ByVal srcImage As RasterImage, ByVal destStream As Stream) 
   ' srcImage should be 24 bits per pixel. 
   Dim codecs As RasterCodecs = New RasterCodecs() 
   codecs.ThrowExceptionsOnInvalidImages = True 
 
   ' Create a new 4-bit image. 
   Dim destImage As RasterImage = New RasterImage(RasterMemoryFlags.Conventional, srcImage.Width, srcImage.Height, 4, srcImage.Order, srcImage.ViewPerspective, srcImage.GetPalette(), Nothing, 0) 
   Debug.Assert(destImage.BitsPerPixel = 4) 
 
   Dim bufferSize As Integer = RasterBufferConverter.CalculateConvertSize(srcImage.Width, srcImage.BitsPerPixel, destImage.Width, destImage.BitsPerPixel) 
 
   ' Allocate the buffer 
   Dim buffer As Byte() = New Byte(bufferSize - 1) {} 
 
   ' Process each row from srcImage to destImage. 
   srcImage.Access() 
   destImage.Access() 
 
   Dim i As Integer = 0 
   Do While i < srcImage.Height 
      srcImage.GetRow(i, buffer, 0, srcImage.BytesPerLine) 
      RasterBufferConverter.Convert(buffer, 0, srcImage.Width, srcImage.BitsPerPixel, destImage.BitsPerPixel, srcImage.Order, destImage.Order, Nothing, Nothing, 0, 8, 0, RasterConvertBufferFlags.None) 
      destImage.SetRow(i, buffer, 0, destImage.BytesPerLine) 
      i += 1 
   Loop 
 
   destImage.Release() 
   srcImage.Release() 
 
   ' Save the destination image back to disk 
   codecs.Save(destImage, destStream, RasterImageFormat.Bmp, 4) 
 
   ' Clean up 
   srcImage.Dispose() 
   destImage.Dispose() 
End Sub 

Requirements

Target Platforms

Help Version 20.0.2020.4.2
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2020 LEAD Technologies, Inc. All Rights Reserved.

Leadtools Assembly