Distance Property
Summary
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; }
Public Property Distance As Integer
public:
property int Distance {
int get();
void set ( int );
}
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.
Example
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))
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:\LEADTOOLS21\Resources\Images";
}
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:\LEADTOOLS21\Resources\Images"
End Class