←Select platform

StopCompress Method

Summary
Cleans up all data variables and buffers allocated by the JPEG or LEAD CMP compression engine.
Syntax
C#
Objective-C
C++/CLI
Java
Python
public void StopCompress() 
- (void)stopCompress 
public void stopCompress() 
public: 
void StopCompress();  
def StopCompress(self): 
Remarks

Calling this method will reset all internal variables to their default settings. Call this method after the compression of the entire image using Compress. For a detailed description of when to use this method, refer to StartCompress.

Example
C#
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Svg; 
 
 
       
public void CompressExample() 
{ 
   RasterCodecs codecs = new RasterCodecs(); 
 
   string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp"); 
   string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1_CompressData.cmp"); 
 
   // Load the image to at 24-bits per pixel 
   RasterImage image = codecs.Load(srcFileName, 24, CodecsLoadByteOrder.Bgr, 1, 1); 
   if (image.ViewPerspective != RasterViewPerspective.TopLeft) 
      image.ChangeViewPerspective(RasterViewPerspective.TopLeft); 
 
   // Create the output file 
   _compressStream = File.Create(destFileName); 
 
   // Calculate the bytes per line in the input buffer, without padding  
   int lineBytes = image.Width * 3; 
 
   // Allocate a buffer for the incoming uncompressed data. Note that we 
   //  are compressing 16 lines at a time. You should always use multiples of 16 
   byte[] inBuffer = new byte[16 * lineBytes]; 
 
   // Allocate an output buffer. This is where the compressed data will 
   // go.  Note that this allocates 1024-byte packets.  
   byte[] outBuffer = new byte[1024]; 
 
   // Lock down the image 
   image.Access(); 
 
   // Initialize the compression engine 
   codecs.Options.Jpeg.Save.CmpQualityFactorPredefined = CodecsCmpQualityFactorPredefined.QualityAndSize; 
   codecs.StartCompress( 
      image.Width, 
      image.Height, 
      image.BitsPerPixel, 
      image.Order, 
      image.ViewPerspective, 
      16 * lineBytes, 
      outBuffer, 
      0, 
      outBuffer.Length, 
      CodecsCompression.Cmp, 
      CodecsCompressDataCallback); 
 
   // Compress the data 
   int i = 0; 
   while (i < image.Height) // i is incremented at the end 
   { 
      // Compression of the 16-line chunk starts here 
      int j = 0; 
      int inBufferIndex = 0; 
      while ((i + j) < image.Height && j < 16) 
      { 
         // Get one line at time 
         image.GetRow(i + j, inBuffer, inBufferIndex, lineBytes); 
 
         // Move to next line 
         inBufferIndex += lineBytes; 
 
         j++; 
      } 
 
      // This is the main function that will do the actual Compression 
      codecs.Compress(inBuffer, 0); 
      i += 16; 
   } 
 
   // Reset the compression engine  
   codecs.StopCompress(); 
 
   // Release the image and close the file 
   image.Release(); 
   _compressStream.Close(); 
 
   // Clean up 
   codecs.Dispose(); 
} 
 
FileStream _compressStream; 
byte[] _compressBuffer; 
 
bool CodecsCompressDataCallback(int width, int height, int bitsPerPixel, RasterByteOrder order, RasterViewPerspective viewPerspective, RasterNativeBuffer buffer) 
{ 
   // Write data to the file 
   if (_compressBuffer == null || _compressBuffer.Length < buffer.Length) 
      _compressBuffer = new byte[(int)buffer.Length]; 
 
   Marshal.Copy(buffer.Data, _compressBuffer, 0, (int)buffer.Length); 
 
   _compressStream.Write(_compressBuffer, 0, (int)buffer.Length); 
 
   return true; 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images"; 
} 
Requirements

Target Platforms

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

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