- palette
- The palette this uses for dithering. You can specify your own palette, or use a null reference (Nothing in Visual Basic) for LEAD's fixed palette.
- colors
- Number of colors used in the palette. If the palette contains more colors, only the first colors colors are used. Valid values are 2 to 256.
Visual Basic (Declaration) | |
---|---|
Public Sub StartDithering( _ ByVal palette() As RasterColor, _ ByVal colors As Integer _ ) |
Visual Basic (Usage) | Copy Code |
---|---|
Dim instance As RasterImage Dim palette() As RasterColor Dim colors As Integer instance.StartDithering(palette, colors) |
C# | |
---|---|
public void StartDithering( RasterColor[] palette, int colors ) |
C++/CLI | |
---|---|
public: void StartDithering( array<RasterColor>^ palette, int colors ) |
Parameters
- palette
- The palette this uses for dithering. You can specify your own palette, or use a null reference (Nothing in Visual Basic) for LEAD's fixed palette.
- colors
- Number of colors used in the palette. If the palette contains more colors, only the first colors colors are used. Valid values are 2 to 256.
This example dithers each line in one image and writes it to another image.
Visual Basic | Copy Code |
---|---|
Public Sub StartDitheringExample() Dim codecs As RasterCodecs = New RasterCodecs() ' Load an image that has BottomLeft ViewPerspective Dim image As RasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "IMAGE1.CMP")) Dim Palette As RasterColor() = RasterPalette.Fixed(8) ' Create the new palletized image. Dim destinationImage As RasterImage = New RasterImage(RasterMemoryFlags.Conventional, image.Width, image.Height, 8, image.Order, image.ViewPerspective, Palette, IntPtr.Zero, 0) ' Set the dithering method. image.DitheringMethod = RasterDitheringMethod.StevensonArce ' Initialize the dithering process. image.StartDithering(Palette, 256) ' Allocate the output buffer for 8-bit data. Dim InBuffer As Byte() = New Byte(image.Width * 3 - 1) {} ' Buffer to hold the input row. Dim OutBuffer As Byte() = New Byte(image.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 < image.Height image.GetRow(i, InBuffer, 0, image.BytesPerLine) image.DitherLine(InBuffer, 0, OutBuffer, 0) destinationImage.SetRow(i, OutBuffer, 0, destinationImage.BytesPerLine) i += 1 Loop ' End the dithering process. image.StopDithering() codecs.Save(destinationImage, Path.Combine(LEAD_VARS.ImagesDir, "IMAGE1_DitherLine.BMP"), RasterImageFormat.Bmp, 0) image.Dispose() destinationImage.Dispose() codecs.Dispose() End Sub Public NotInheritable Class LEAD_VARS Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" End Class |
C# | Copy Code |
---|---|
public void StartDitheringExample() { RasterCodecs codecs = new RasterCodecs(); // Load an image that has BottomLeft ViewPerspective RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "IMAGE1.CMP")); RasterColor[] Palette = RasterPalette.Fixed(256); // Create the new palletized image. RasterImage destinationImage = new RasterImage(RasterMemoryFlags.Conventional, image.Width, image.Height, 8, image.Order, image.ViewPerspective, Palette, IntPtr.Zero, 0); // Set the dithering method. image.DitheringMethod = RasterDitheringMethod.StevensonArce; // Initialize the dithering process. image.StartDithering(Palette, 256); // Allocate the output buffer for 8-bit data. byte[] InBuffer = new byte[image.Width * 3];// Buffer to hold the input row. byte[] OutBuffer = new byte[image.Width];// Buffer to hold the output row. // Use DitherLine method to process each row in the image. for(int i = 0; i < image.Height; i++) { image.GetRow(i, InBuffer, 0, image.BytesPerLine); image.DitherLine(InBuffer, 0, OutBuffer, 0); destinationImage.SetRow(i, OutBuffer, 0, destinationImage.BytesPerLine); } // End the dithering process. image.StopDithering(); codecs.Save(destinationImage, Path.Combine(LEAD_VARS.ImagesDir, "IMAGE1_DitherLine.BMP"), RasterImageFormat.Bmp, 0); image.Dispose(); destinationImage.Dispose(); codecs.Dispose(); } static class LEAD_VARS { public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; } |
SilverlightCSharp | Copy Code |
---|---|
public void StartDitheringExample(RasterImage image, Stream destStream) { RasterColor[] Palette = RasterPalette.Fixed(256); // Create the new palletized image. RasterImage destinationImage = new RasterImage(RasterMemoryFlags.Conventional, image.Width, image.Height, 8, image.Order, image.ViewPerspective, Palette, null, 0); // Set the dithering method. image.DitheringMethod = RasterDitheringMethod.StevensonArce; // Initialize the dithering process. image.StartDithering(Palette, 256); // Allocate the output buffer for 8-bit data. byte[] InBuffer = new byte[image.Width * 3];// Buffer to hold the input row. byte[] OutBuffer = new byte[image.Width];// Buffer to hold the output row. // Use DitherLine method to process each row in the image. for (int i = 0; i < image.Height; i++) { image.GetRow(i, InBuffer, 0, image.BytesPerLine); image.DitherLine(InBuffer, 0, OutBuffer, 0); destinationImage.SetRow(i, OutBuffer, 0, destinationImage.BytesPerLine); } // End the dithering process. image.StopDithering(); RasterCodecs codecs = new RasterCodecs(); codecs.Save(destinationImage, destStream, RasterImageFormat.Bmp, 0); image.Dispose(); destinationImage.Dispose(); } |
SilverlightVB | Copy Code |
---|---|
Public Sub StartDitheringExample(ByVal image As RasterImage, ByVal destStream As Stream) Dim Palette As RasterColor() = RasterPalette.Fixed(256) ' Create the new palletized image. Dim destinationImage As RasterImage = New RasterImage(RasterMemoryFlags.Conventional, image.Width, image.Height, 8, image.Order, image.ViewPerspective, Palette, Nothing, 0) ' Set the dithering method. image.DitheringMethod = RasterDitheringMethod.StevensonArce ' Initialize the dithering process. image.StartDithering(Palette, 256) ' Allocate the output buffer for 8-bit data. Dim InBuffer As Byte() = New Byte(image.Width * 3 - 1){} ' Buffer to hold the input row. Dim OutBuffer As Byte() = New Byte(image.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 < image.Height image.GetRow(i, InBuffer, 0, image.BytesPerLine) image.DitherLine(InBuffer, 0, OutBuffer, 0) destinationImage.SetRow(i, OutBuffer, 0, destinationImage.BytesPerLine) i += 1 Loop ' End the dithering process. image.StopDithering() Dim codecs As RasterCodecs = New RasterCodecs() codecs.Save(destinationImage, destStream, RasterImageFormat.Bmp, 0) image.Dispose() destinationImage.Dispose() End Sub |
The following flow chart shows how the methods relate to each other:
The following properties from the RasterImage are used to control the dithering operation:
- Width
- Height
- BitsPerPixel
- Order - if BitsPerPixel is greater than 8
- DitheringMethod - if BitsPerPixel is less than 16
This method does not support signed images.
For more information, refer to Introduction to Image Processing With LEADTOOLS.
Target Platforms: Silverlight, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7, MAC OS/X (Intel Only), Windows Phone 7
Reference
RasterImage ClassRasterImage Members
Introduction to Image Processing With LEADTOOLS
Dithering Methods
Codecs.CodecsThumbnailOptions.DitheringMethod property
ImageProcessing.ColorResolutionCommand.DitheringMethod property
RasterDitheringMethod enumeration
RasterDefaults.DitheringMethod property
RasterImage.DitheringMethod property
RasterImage.DitherLine method
RasterImage.StopDithering method
RasterBufferConverter.Convert