Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing
Imports Leadtools.ImageProcessing.Core
Public Sub NetscapePaletteExample()
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_Netscape.bmp")
' Load the source image as 8 bits/pixel
Dim srcImage As RasterImage = codecs.Load(srcFileName, 8, CodecsLoadByteOrder.Rgb, 1, 1)
' Get the netscape palette
Dim netscapePalette As RasterColor() = RasterPalette.Netscape()
' Create the new palletized image.
Dim destImage As RasterImage = New RasterImage(RasterMemoryFlags.Conventional, srcImage.Width, srcImage.Height, 8, srcImage.Order, srcImage.ViewPerspective, netscapePalette, IntPtr.Zero, 0)
' Set the dithering method.
srcImage.DitheringMethod = RasterDitheringMethod.StevensonArce
srcImage.Access()
destImage.Access()
' Initialize the dithering process.
srcImage.StartDithering(netscapePalette, 256)
' Allocate the output buffer for 8-bit data.
Dim inBuffer As Byte() = New Byte(srcImage.Width * 3 - 1) {} ' Buffer to hold the input row.
Dim outBuffer As Byte() = New Byte(srcImage.Width - 1) {} ' Buffer to hold the output row.
' Use DitherLine method to process each row in the image.
Dim i As Integer = 0
Do While i < srcImage.Height
srcImage.GetRow(i, inBuffer, 0, srcImage.BytesPerLine)
srcImage.DitherLine(inBuffer, 0, outBuffer, 0)
destImage.SetRow(i, outBuffer, 0, destImage.BytesPerLine)
i += 1
Loop
' End the dithering process.
srcImage.StopDithering()
destImage.Release()
srcImage.Release()
' Save the destination image
codecs.Save(destImage, destFileName, RasterImageFormat.Bmp, 8)
' Cleanup
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.ImageProcessing;
using Leadtools.ImageProcessing.Core;
public void NetscapePaletteExample()
{
string srcFileName = Path.Combine(ImagesPath.Path, "Image1.cmp");
string destFileName = Path.Combine(ImagesPath.Path, "Image1_Netscape.bmp");
RasterCodecs codecs = new RasterCodecs();
codecs.ThrowExceptionsOnInvalidImages = true;
// Load the source image as 8 bits/pixel
RasterImage srcImage = codecs.Load(srcFileName, 8, CodecsLoadByteOrder.Rgb, 1, 1);
// Get the netscape palette
RasterColor[] netscapePalette = RasterPalette.Netscape();
// Create the new palletized image.
RasterImage destImage = new RasterImage(
RasterMemoryFlags.Conventional,
srcImage.Width,
srcImage.Height,
8,
srcImage.Order,
srcImage.ViewPerspective,
netscapePalette,
IntPtr.Zero,
0);
// Set the dithering method.
srcImage.DitheringMethod = RasterDitheringMethod.StevensonArce;
srcImage.Access();
destImage.Access();
// Initialize the dithering process.
srcImage.StartDithering(netscapePalette, 256);
// Allocate the output buffer for 8-bit data.
byte[] inBuffer = new byte [srcImage.Width * 3]; // Buffer to hold the input row.
byte[] outBuffer = new byte [srcImage.Width]; // Buffer to hold the output row.
// Use DitherLine method to process each row in the image.
for(int i = 0; i < srcImage.Height; i++)
{
srcImage.GetRow(i, inBuffer, 0, srcImage.BytesPerLine);
srcImage.DitherLine(inBuffer, 0, outBuffer, 0);
destImage.SetRow(i, outBuffer, 0, destImage.BytesPerLine);
}
// End the dithering process.
srcImage.StopDithering();
destImage.Release();
srcImage.Release();
// Save the destination image
codecs.Save(destImage, destFileName, RasterImageFormat.Bmp, 8);
// Cleanup
srcImage.Dispose();
destImage.Dispose();
}
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Examples;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Core;
using Leadtools.Windows.Media;
public void NetscapePaletteExample(RasterImage srcImage, Stream destStream)
{
RasterCodecs codecs = new RasterCodecs();
codecs.ThrowExceptionsOnInvalidImages = true;
// Get the netscape palette
RasterColor[] netscapePalette = RasterPalette.Netscape();
// Create the new palletized image.
RasterImage destImage = new RasterImage(
RasterMemoryFlags.Conventional,
srcImage.Width,
srcImage.Height,
8,
srcImage.Order,
srcImage.ViewPerspective,
netscapePalette,
null,
0);
// Set the dithering method.
srcImage.DitheringMethod = RasterDitheringMethod.StevensonArce;
srcImage.Access();
destImage.Access();
// Initialize the dithering process.
srcImage.StartDithering(netscapePalette, 256);
// Allocate the output buffer for 8-bit data.
byte[] inBuffer = new byte [srcImage.Width * 3]; // Buffer to hold the input row.
byte[] outBuffer = new byte [srcImage.Width]; // Buffer to hold the output row.
// Use DitherLine method to process each row in the image.
for(int i = 0; i < srcImage.Height; i++)
{
srcImage.GetRow(i, inBuffer, 0, srcImage.BytesPerLine);
srcImage.DitherLine(inBuffer, 0, outBuffer, 0);
destImage.SetRow(i, outBuffer, 0, destImage.BytesPerLine);
}
// End the dithering process.
srcImage.StopDithering();
destImage.Release();
srcImage.Release();
// Save the destination image
codecs.Save(destImage, destStream, RasterImageFormat.Bmp, 8);
// Cleanup
srcImage.Dispose();
destImage.Dispose();
}
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing
Imports Leadtools.ImageProcessing.Core
Imports Leadtools.Windows.Media
Public Sub NetscapePaletteExample(ByVal srcImage As RasterImage, ByVal destStream As Stream)
Dim codecs As RasterCodecs = New RasterCodecs()
codecs.ThrowExceptionsOnInvalidImages = True
' Get the netscape palette
Dim netscapePalette As RasterColor() = RasterPalette.Netscape()
' Create the new palletized image.
Dim destImage As RasterImage = New RasterImage(RasterMemoryFlags.Conventional, srcImage.Width, srcImage.Height, 8, srcImage.Order, srcImage.ViewPerspective, netscapePalette, Nothing, 0)
' Set the dithering method.
srcImage.DitheringMethod = RasterDitheringMethod.StevensonArce
srcImage.Access()
destImage.Access()
' Initialize the dithering process.
srcImage.StartDithering(netscapePalette, 256)
' Allocate the output buffer for 8-bit data.
Dim inBuffer As Byte() = New Byte (srcImage.Width * 3 - 1){} ' Buffer to hold the input row.
Dim outBuffer As Byte() = New Byte (srcImage.Width - 1){} ' Buffer to hold the output row.
' Use DitherLine method to process each row in the image.
Dim i As Integer = 0
Do While i < srcImage.Height
srcImage.GetRow(i, inBuffer, 0, srcImage.BytesPerLine)
srcImage.DitherLine(inBuffer, 0, outBuffer, 0)
destImage.SetRow(i, outBuffer, 0, destImage.BytesPerLine)
i += 1
Loop
' End the dithering process.
srcImage.StopDithering()
destImage.Release()
srcImage.Release()
' Save the destination image
codecs.Save(destImage, destStream, RasterImageFormat.Bmp, 8)
' Cleanup
srcImage.Dispose()
destImage.Dispose()
End Sub