←Select platform

Distance Property

Gets or sets a value that represents the distance between image colors to be reduced in the image optimization operation.

public int Distance { get; set; } 
property int Distance { 
   int get(); 
   void set (    int ); 
Distance # get and set (ImageOptimizerOptions) 

Property Value

The Distance value can be a value between 0 and 255, where:

  • 0 means no additional reduction.
  • 1 to 255 further reduction based on the color distance.

The default value is 8.


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-bit, 24-bit, 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-bit, 4-bit, or 8-bits per pixel BMP image, the Percent and Distance are used.


This example will optimize a Gif image file and then save it to a separate folder

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)) 
   // 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); 
   //shutdown the RasterCodecs class. 
static class LEAD_VARS 
   public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images"; 

Target Platforms

Help Version 22.0.2023.3.31
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.