ImageOptimizerOptions Structure

Summary

Provides options to be used by the ImageOptimizer.OptimizeBuffer and the ImageOptimizer.OptimizeDirectory methods, to optimize the image and save it using the optimal bits per pixel.

Syntax
C#
VB
C++
public struct ImageOptimizerOptions 
  
Public Structure ImageOptimizerOptions  
   Inherits System.ValueType 
public value class ImageOptimizerOptions : public System.ValueType  

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

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