←Select platform

StartDithering Method

Summary

Initializes the buffered dithering of an image.

Syntax
C#
VB
Objective-C
C++
Java
public void StartDithering( 
   RasterColor[] palette, 
   int colors 
) 
Public Sub StartDithering( _ 
   ByVal palette() As RasterColor, _ 
   ByVal colors As Integer _ 
)  
- (BOOL)startDithering:(nullable NSArray<LTRasterColor *> *)palette  
                colors:(NSUInteger)colors  
                 error:(NSError **)error 
public void startDithering( 
  RasterColor[] palette,  
  int colors 
) 
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 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.

Remarks

The following flow chart shows how the methods relate to each other:

Dithering Flow Chart

The following properties from the RasterImage are used to control the dithering operation:

This method does not support signed images.

For more information, refer to Introduction to Image Processing With LEADTOOLS.

Example

This example dithers each line in one image and writes it to another image.

C#
VB
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Core; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Dicom; 
using Leadtools.Drawing; 
using Leadtools.Controls; 
using LeadtoolsExamples.Common; 
using Leadtools.Svg; 
 
public void StartDitheringExample() 
{ 
   RasterCodecs codecs = new RasterCodecs(); 
   // Load an image that has BottomLeft ViewPerspective 
   RasterImage image = codecs.Load(Path.Combine(ImagesPath.Path, "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. 
   image.Access(); 
   destinationImage.Access(); 
   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); 
   } 
   destinationImage.Release(); 
   image.Release(); 
 
   // End the dithering process. 
   image.StopDithering(); 
 
   codecs.Save(destinationImage, Path.Combine(ImagesPath.Path, "IMAGE1_DitherLine.BMP"), RasterImageFormat.Bmp, 0); 
 
   image.Dispose(); 
   destinationImage.Dispose(); 
   codecs.Dispose(); 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing 
Imports Leadtools.ImageProcessing.Core 
Imports Leadtools.ImageProcessing.Color 
Imports Leadtools.Controls 
Imports Leadtools.Dicom 
Imports Leadtools.Drawing 
Imports Leadtools.Svg 
 
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 
   image.Access() 
   destinationImage.Access() 
   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 
   image.Release() 
   destinationImage.Release() 
 
   ' 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#[Silverlight C# Example] 
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.Dicom; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Core; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Examples; 
using Leadtools.Windows.Media; 
 
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(); 
} 
vb[Silverlight VB Example] 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.Dicom 
Imports Leadtools.ImageProcessing 
Imports Leadtools.ImageProcessing.Core 
Imports Leadtools.ImageProcessing.Color 
Imports Leadtools.Windows.Media 
 
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 

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