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
using Leadtools;
using Leadtools.Codecs;
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);
}
}
}
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();
}
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