←Select platform

StartDecompress Method

Summary

Initializes the buffered decompression engine.

Syntax
C#
VB
Objective-C
C++
Java
public object StartDecompress( 
   CodecsStartDecompressOptions options 
) 
Public Function StartDecompress( _ 
   ByVal options As CodecsStartDecompressOptions _ 
) As Object 
- (nullable NSObject *)startDecompress:(LTCodecsStartDecompressOptions *)decompressOptions error:(NSError **)error 
public Object startDecompress(CodecsStartDecompressOptions options) 
public: 
Object^ StartDecompress(  
   CodecsStartDecompressOptions options 
)  

Parameters

options
Provides input parameters for the decompression process.

Return Value

An object that identifies the decompression process. This same object must be passed to the Decompress and StopDecompress methods.

Remarks

Initializes the buffered decompression engine. The decompression is then carried out using the Decompress method. It is ended by the StopDecompress method.

Currently, raw JPEG must contain all the Huffman tables encoded. That is, it must be a readable JPEG file.

Example
C#
VB
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Svg; 
using LeadtoolsExamples.Common; 
 
// This sample loads raw data from a PackBits TIF file 
// PackBits.tif is a 24-bit tif packbits compressed file 
// PackBits.tif has 46 strips of packbits data 
// The strip information is obtained by reading the TIF tags TAG_STRIPOFFSETS and TAG_STRIPBYTECOUNTS 
// The strips are directly read and fed to the Compress method 
void LoadRawPackbitsStrips(string packTifFile) 
{ 
   RasterCodecs codecs = new RasterCodecs(); 
 
   string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "Decompress.bmp"); 
 
   CodecsImageInfo imageInfo = codecs.GetInformation(packTifFile, false); 
 
   // StartDecompress 
   CodecsStartDecompressOptions options = CodecsStartDecompressOptions.Empty; 
   options.DataType = CodecsStartDecompressDataType.Strips; 
   options.Format = RasterImageFormat.RawPackBits; 
   options.Width = imageInfo.Width; 
   options.Height = imageInfo.Height; 
   options.BitsPerPixel = imageInfo.BitsPerPixel; 
   options.ViewPerspective = imageInfo.ViewPerspective; 
   options.RawOrder = imageInfo.Order; 
   options.LoadOrder = CodecsLoadByteOrder.BgrOrGray; 
   options.XResolution = imageInfo.XResolution; 
   options.YResolution = imageInfo.YResolution; 
   options.TiffPhotometricInterpretation = CodecsTiffPhotometricInterpretation.Rgb; 
 
   object decompressObject = codecs.StartDecompress(options); 
 
   // Decompress 
 
   const int TAG_STRIPOFFSETS = 0x111; 
   const int TAG_STRIPBYTECOUNTS = 0x117; 
   const int TAG_ROWSPERSTRIP = 0x116; 
   const int MAX_STRIPS = 1000; 
 
   int[] stripOffsets = new int[MAX_STRIPS]; 
   int[] stripSizes = new int[MAX_STRIPS]; 
   int[] rowsPerStripBuffer = new int[1]; 
 
   int maxIndex = ReadTag(codecs, packTifFile, TAG_STRIPOFFSETS, stripOffsets); 
   ReadTag(codecs, packTifFile, TAG_STRIPBYTECOUNTS, stripSizes); 
   ReadTag(codecs, packTifFile, TAG_ROWSPERSTRIP, rowsPerStripBuffer); 
   int rowsPerStrip = rowsPerStripBuffer[0]; 
 
   FileStream fs = File.OpenRead(packTifFile); 
 
   const int row = 0; // Note: this parameter is ignored for strips 
   const int column = 0; // Column offset of tile 
   for (int index = 0; index < maxIndex; index++) 
   { 
      // seek to the first strip 
      fs.Seek(stripOffsets[index], SeekOrigin.Begin); 
 
      byte[] buffer = new byte[stripSizes[index]]; 
      fs.Read(buffer, 0, buffer.Length); 
 
      // Calculate the height of uncompressed strip/tile 
      int height = rowsPerStrip; 
      if (index == (maxIndex - 1)) 
      { 
         // fewer rows per strip 
         height = imageInfo.Height - (maxIndex - 1) * rowsPerStrip; 
      } 
 
      codecs.Decompress( 
         decompressObject, 
         buffer, 
         0, 
         buffer.Length, 
         imageInfo.Width, 
         height, 
         row, 
         column, 
         CodecsDecompressDataFlags.Complete); 
   } 
 
   fs.Close(); 
 
   // StopDecompress 
   RasterImage image = codecs.StopDecompress(decompressObject); 
 
   // 'image' contains the uncompressed image 
   codecs.Save(image, destFileName, RasterImageFormat.Bmp, 24); 
   image.Dispose(); 
 
   // Clean up 
   codecs.Dispose(); 
} 
 
// Returns maximum index 
int ReadTag(RasterCodecs codecs, string fileName, int tagId, int[] stripArray) 
{ 
   RasterTagMetadata tag = codecs.ReadTag(fileName, 1, tagId); 
   int[] data = tag.ToInt32(); 
   data.CopyTo(stripArray, 0); 
   return tag.Count; 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing 
Imports Leadtools.ImageProcessing.Color 
Imports Leadtools.Drawing 
Imports Leadtools.Svg 
 
' This sample loads raw data from a PackBits TIF file 
' PackBits.tif is a 24-bit tif packbits compressed file 
' PackBits.tif has 46 strips of packbits data 
' The strip information is obtained by reading the TIF tags TAG_STRIPOFFSETS and TAG_STRIPBYTECOUNTS 
' The strips are directly read and fed to the Compress method 
Private Sub LoadRawPackbitsStrips(ByVal packTifFile As String) 
   Dim codecs As RasterCodecs = New RasterCodecs() 
 
   Dim destFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Decompress.bmp") 
 
   Dim imageInfo As CodecsImageInfo = codecs.GetInformation(packTifFile, False) 
 
   ' StartDecompress 
   Dim options As CodecsStartDecompressOptions = CodecsStartDecompressOptions.Empty 
   options.DataType = CodecsStartDecompressDataType.Strips 
   options.Format = RasterImageFormat.RawPackBits 
   options.Width = imageInfo.Width 
   options.Height = imageInfo.Height 
   options.BitsPerPixel = imageInfo.BitsPerPixel 
   options.ViewPerspective = imageInfo.ViewPerspective 
   options.RawOrder = imageInfo.Order 
   options.LoadOrder = CodecsLoadByteOrder.BgrOrGray 
   options.XResolution = imageInfo.XResolution 
   options.YResolution = imageInfo.YResolution 
   options.TiffPhotometricInterpretation = CodecsTiffPhotometricInterpretation.Rgb 
 
   Dim decompressObject As Object = codecs.StartDecompress(options) 
 
   ' Decompress 
 
   Const TAG_STRIPOFFSETS As Integer = &H111 
   Const TAG_STRIPBYTECOUNTS As Integer = &H117 
   Const TAG_ROWSPERSTRIP As Integer = &H116 
   Const MAX_STRIPS As Integer = 1000 
 
   Dim stripOffsets As Integer() = New Integer(MAX_STRIPS - 1) {} 
   Dim stripSizes As Integer() = New Integer(MAX_STRIPS - 1) {} 
   Dim rowsPerStripBuffer As Integer() = New Integer(0) {} 
 
   Dim maxIndex As Integer = ReadTag(codecs, packTifFile, TAG_STRIPOFFSETS, stripOffsets) 
   ReadTag(codecs, packTifFile, TAG_STRIPBYTECOUNTS, stripSizes) 
   ReadTag(codecs, packTifFile, TAG_ROWSPERSTRIP, rowsPerStripBuffer) 
   Dim rowsPerStrip As Integer = rowsPerStripBuffer(0) 
 
   Dim fs As FileStream = File.OpenRead(packTifFile) 
 
   Const row As Integer = 0 ' Note: this parameter is ignored for strips 
   Const column As Integer = 0 ' Column offset of tile 
   Dim index As Integer = 0 
   Do While index < maxIndex 
      ' seek to the first strip 
      fs.Seek(stripOffsets(index), SeekOrigin.Begin) 
 
      Dim buffer As Byte() = New Byte(stripSizes(index) - 1) {} 
      fs.Read(buffer, 0, buffer.Length) 
 
      ' Calculate the height of uncompressed strip/tile 
      Dim height As Integer = rowsPerStrip 
      If index = (maxIndex - 1) Then 
         ' fewer rows per strip 
         height = imageInfo.Height - (maxIndex - 1) * rowsPerStrip 
      End If 
 
      codecs.Decompress(decompressObject, buffer, 0, buffer.Length, imageInfo.Width, height, row, column, CodecsDecompressDataFlags.Complete) 
      index += 1 
   Loop 
 
   fs.Close() 
 
   ' StopDecompress 
   Dim image As RasterImage = codecs.StopDecompress(decompressObject) 
 
   ' 'image' contains the uncompressed image 
   codecs.Save(image, destFileName, RasterImageFormat.Bmp, 24) 
   image.Dispose() 
 
   ' Clean up 
   codecs.Dispose() 
End Sub 
 
' Returns maximum index 
Private Function ReadTag(ByVal codecs As RasterCodecs, ByVal fileName As String, ByVal tagId As Integer, ByVal stripArray As Integer()) As Integer 
   Dim tag As RasterTagMetadata = codecs.ReadTag(fileName, 1, tagId) 
   Dim data As Integer() = tag.ToInt32() 
   data.CopyTo(stripArray, 0) 
   Return tag.Count 
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.4.3
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2020 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Codecs Assembly