Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageOptimization
Imports Leadtools.Support.Examples
Public Sub TestJpegImageOptimizer()
   ' Initialize the RasterCodecs class
   Dim codecs As RasterCodecs = New RasterCodecs()
   ' The input and output location
   Dim inputFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Cannon.jpg")
   Dim outputFolder As String = Path.Combine(LEAD_VARS.ImagesDir, "OptimizedImages")
   ' Initialize a new Optimizer object
   Dim optimizer As ImageOptimizer = New ImageOptimizer()
   ' Optimization Options
   Dim options As ImageOptimizerOptions = ImageOptimizerOptions.Default
   ' Set custom optimization options
   options.JpegQualityFactor = 255
   options.JpegColorSpace = ImageOptimizerJpegColorSpace.JpegColorSpace422
   ' Load the input file into a memory byte array
   Dim orgBuffer() As Byte = File.ReadAllBytes(inputFileName)
   ' Optimize this buffer
   Dim optBuffer() As Byte = optimizer.OptimizeBuffer(codecs, orgBuffer, 0, 0, options, AddressOf OptimizeBufferProgress)
   ' 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 Shared Function OptimizeBufferProgress(ByVal percent As Integer) As Boolean
   'Console.WriteLine(String.Format("{0}%", percent))
   Return True
End Function
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 TestJpegImageOptimizer( )
{
   // Initialize the RasterCodecs class
   RasterCodecs codecs = new RasterCodecs();
   // The input and output location
   string inputFileName = Path.Combine(LEAD_VARS.ImagesDir, "Cannon.jpg");
   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.JpegQualityFactor = 255;
   options.JpegColorSpace = ImageOptimizerJpegColorSpace.JpegColorSpace422;
   // Load the input file into a memory byte array
   byte[] orgBuffer = File.ReadAllBytes(inputFileName);
   // Optimize this buffer
   byte[] optBuffer = optimizer.OptimizeBuffer(codecs, orgBuffer, 0, orgBuffer.Length, options, OptimizeBufferProgress);
   // 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 bool OptimizeBufferProgress(int percent)
{
   Console.WriteLine(string.Format("{0}%", percent));
   return true;
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}