LEADTOOLS Image Processing (Leadtools.ImageOptimization assembly)

Distance Property

Show in webframe
Example 





Gets or sets a value that represents the distance between image colors to be reduced in the image optimization operation.
Syntax
public int Distance {get; set;}
'Declaration
 
Public Property Distance As Integer
'Usage
 
Dim instance As ImageOptimizerOptions
Dim value As Integer
 
instance.Distance = value
 
value = instance.Distance

            

            
public:
property int Distance {
   int get();
   void set (    int value);
}

Property Value

The Distance value can be a value between 0 and 255, where: The default value is 8.
Remarks
The Distance value will be used if the original image format is one of the following:
  1. Png File:
  2. Gif File:
  3. Bmp File
If the image is a 16-, 24-, or 32-bit BMP image, the real number of colors used in the image is calculated and when possible the image is saved with lower bits per pixel. If the image is a 1-, 4-, or 8-bits per pixel BMP image, the Percent and Distance are used.
Example
Copy Code  
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageOptimization
Imports Leadtools.Support.Examples

Public Sub TestGifImageOptimizer()
   ' Initialize the RasterCodecs class
   Dim codecs As RasterCodecs = New RasterCodecs()

   ' The input and output location
   Dim inputFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "eye.gif")
   Dim outputFolder As String = Path.Combine(LEAD_VARS.ImagesDir, "Optimized Images")

   ' Initialize a new Optimizer object
   Dim optimizer As ImageOptimizer = New ImageOptimizer()

   ' Optimization Options
   Dim options As ImageOptimizerOptions = ImageOptimizerOptions.Default

   ' Set custom optimization options
   options.Distance = 20
   options.Percent = 15
   options.PickSamePalette = True

   ' Load the input file into a byte memory array
   Dim orgBuffer() As Byte = File.ReadAllBytes(inputFileName)

   ' Optimize this buffer
   Dim optBuffer() As Byte = optimizer.OptimizeBuffer(codecs, orgBuffer, 0, orgBuffer.Length, options, Nothing)

   ' Save this image into the output folder
   ' Make sure the output folder exists
   If (Not Directory.Exists(outputFolder)) Then
      Directory.CreateDirectory(outputFolder)
   End If

   ' Get the name of the output file from the input file
   Dim outputFileName As String = Path.Combine(outputFolder, Path.GetFileName(inputFileName))

   ' Save the optimized buffer to the output file
   Using fs As FileStream = File.Create(outputFileName)
      fs.Write(optBuffer, 0, optBuffer.Length)
   End Using

   ' Compare the original image size with the optimized size
   Dim orgSize As Long = New FileInfo(inputFileName).Length
   Dim optSize As Long = New FileInfo(outputFileName).Length
   Dim percentage As Integer = CType(CType(optSize * 100.0 / orgSize, Double), Integer)

   Dim message As String = String.Format( _
      "Original image size: {0} KB{1}Optimized image size: {2} KB{1}Percentage: {3}%", _
      orgSize / 1024, Environment.NewLine, optSize / 1024, _
      100 - percentage)
   MessageBox.Show(message)

   'shutdown the RasterCodecs class.
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.ImageOptimization;

public void TestGifImageOptimizer( )
{
   // Initialize the RasterCodecs class
   RasterCodecs codecs = new RasterCodecs();

   // The input and output location
   string inputFileName = Path.Combine(LEAD_VARS.ImagesDir, "eye.gif");
   string outputFolder = Path.Combine(LEAD_VARS.ImagesDir, "OptimizedImages");

   // Initialize a new Optimizer object
   ImageOptimizer optimizer = new ImageOptimizer();

   // Optimization Options
   ImageOptimizerOptions options = ImageOptimizerOptions.Default;

   // Set custom optimization options
   options.Distance = 20;
   options.Percent = 15;
   options.PickSamePalette = true;

   // Load the input file into a byte memory array
   byte[] orgBuffer = File.ReadAllBytes(inputFileName);

   // Optimize this buffer
   byte[] optBuffer = optimizer.OptimizeBuffer(codecs, orgBuffer, 0, orgBuffer.Length, options, null);

   // Save this image into the output folder
   // Make sure the output folder exists
   if(!Directory.Exists(outputFolder))
      Directory.CreateDirectory(outputFolder);

   // Get the name of the output file from the input file
   string outputFileName = Path.Combine(outputFolder, Path.GetFileName(inputFileName));

   // Save the optimized buffer to the output file
   using(FileStream fs = File.Create(outputFileName))
      fs.Write(optBuffer, 0, optBuffer.Length);

   // Compare the original image size with the optimized size
   long orgSize = new FileInfo(inputFileName).Length;
   long optSize = new FileInfo(outputFileName).Length;
   int percentage = (int)((double)optSize * 100.0 / orgSize);

   string message = string.Format(
      "Original image size: {0} KB{1}Optimized image size: {2} KB{1}Percentage: {3}%",
      orgSize / 1024, Environment.NewLine, optSize / 1024,
      100 - percentage);
   MessageBox.Show(message);

   //shutdown the RasterCodecs class.
}

static class LEAD_VARS
{
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
Requirements

Target Platforms

See Also

Reference

ImageOptimizerOptions Structure
ImageOptimizerOptions Members