ImageOptimizerProgress Delegate

Summary

Called during the buffer optimization operation to notify the user of the percent completion of the optimization operation.

Syntax
C#
VB
C++
public delegate bool ImageOptimizerProgress( 
   int percent 
) 
  
Public Delegate Function ImageOptimizerProgress( _ 
   ByVal percent As Integer _ 
) As Boolean 
public delegate bool ImageOptimizerProgress(  
   int percent 
) 

Parameters

percent
A value from 0 to 100 that indicates the percent completion of the optimization operation.

Return Value

A System.Boolean value that indicates whether to cancel the optimization operation. Possible values are:

Value Description
false Cancel the buffer optimization operation.
true Continue normally.

Remarks

The callback method will be called for every 1 of the optimization that has been completed.

Example
C#
VB
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"; 
} 
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, orgBuffer.Length, 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 

Requirements

Target Platforms

See Also

Reference

ImageOptimizerProgress Members

Leadtools.ImageOptimization Namespace

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