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
)
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.
The size in bytes of the required output buffer.
Use this method to calculate the required size of the output buffer for image data conversions.
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.
using Leadtools;
using Leadtools.Codecs;
public void CalculateConvertSizeExample()
{
string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp");
string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "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);
}
}
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS21\Resources\Images";
}
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:\LEADTOOLS21\Resources\Images"
End Class
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document