Initializes the buffered decompression engine.
public object StartDecompress(CodecsStartDecompressOptions options)
Public Function StartDecompress( _ByVal options As Leadtools.Codecs.CodecsStartDecompressOptions _) As Object
public object StartDecompress(Leadtools.Codecs.CodecsStartDecompressOptions options)
- (nullable NSObject *)startDecompress:(LTCodecsStartDecompressOptions *)decompressOptions error:(NSError **)error public Object startDecompress(CodecsStartDecompressOptions options) function Leadtools.Codecs.RasterCodecs.StartDecompress(options)
public:Object^ StartDecompress(Leadtools.Codecs.CodecsStartDecompressOptions options)
options
Provides input parameters for the decompression process.
An object that identifies the decompression process. This same object must be passed to the Decompress and StopDecompress methods.
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.
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 methodvoid LoadRawPackbitsStrips(string packTifFile){RasterCodecs codecs = new RasterCodecs();string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "Decompress.bmp");CodecsImageInfo imageInfo = codecs.GetInformation(packTifFile, false);// StartDecompressCodecsStartDecompressOptions 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);// Decompressconst 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 stripsconst int column = 0; // Column offset of tilefor (int index = 0; index < maxIndex; index++){// seek to the first stripfs.Seek(stripOffsets[index], SeekOrigin.Begin);byte[] buffer = new byte[stripSizes[index]];fs.Read(buffer, 0, buffer.Length);// Calculate the height of uncompressed strip/tileint height = rowsPerStrip;if (index == (maxIndex - 1)){// fewer rows per stripheight = imageInfo.Height - (maxIndex - 1) * rowsPerStrip;}codecs.Decompress(decompressObject,buffer,0,buffer.Length,imageInfo.Width,height,row,column,CodecsDecompressDataFlags.Complete);}fs.Close();// StopDecompressRasterImage image = codecs.StopDecompress(decompressObject);// 'image' contains the uncompressed imagecodecs.Save(image, destFileName, RasterImageFormat.Bmp, 24);image.Dispose();// Clean upcodecs.Dispose();}// Returns maximum indexint 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 LeadtoolsImports Leadtools.CodecsImports Leadtools.ImageProcessingImports Leadtools.ImageProcessing.ColorImports Leadtools.DrawingImports 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 methodPrivate 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)' StartDecompressDim options As CodecsStartDecompressOptions = CodecsStartDecompressOptions.Emptyoptions.DataType = CodecsStartDecompressDataType.Stripsoptions.Format = RasterImageFormat.RawPackBitsoptions.Width = imageInfo.Widthoptions.Height = imageInfo.Heightoptions.BitsPerPixel = imageInfo.BitsPerPixeloptions.ViewPerspective = imageInfo.ViewPerspectiveoptions.RawOrder = imageInfo.Orderoptions.LoadOrder = CodecsLoadByteOrder.BgrOrGrayoptions.XResolution = imageInfo.XResolutionoptions.YResolution = imageInfo.YResolutionoptions.TiffPhotometricInterpretation = CodecsTiffPhotometricInterpretation.RgbDim decompressObject As Object = codecs.StartDecompress(options)' DecompressConst TAG_STRIPOFFSETS As Integer = &H111Const TAG_STRIPBYTECOUNTS As Integer = &H117Const TAG_ROWSPERSTRIP As Integer = &H116Const MAX_STRIPS As Integer = 1000Dim 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 stripsConst column As Integer = 0 ' Column offset of tileDim index As Integer = 0Do While index < maxIndex' seek to the first stripfs.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/tileDim height As Integer = rowsPerStripIf index = (maxIndex - 1) Then' fewer rows per stripheight = imageInfo.Height - (maxIndex - 1) * rowsPerStripEnd Ifcodecs.Decompress(decompressObject, buffer, 0, buffer.Length, imageInfo.Width, height, row, column, CodecsDecompressDataFlags.Complete)index += 1Loopfs.Close()' StopDecompressDim image As RasterImage = codecs.StopDecompress(decompressObject)' 'image' contains the uncompressed imagecodecs.Save(image, destFileName, RasterImageFormat.Bmp, 24)image.Dispose()' Clean upcodecs.Dispose()End Sub' Returns maximum indexPrivate Function ReadTag(ByVal codecs As RasterCodecs, ByVal fileName As String, ByVal tagId As Integer, ByVal stripArray As Integer()) As IntegerDim tag As RasterTagMetadata = codecs.ReadTag(fileName, 1, tagId)Dim data As Integer() = tag.ToInt32()data.CopyTo(stripArray, 0)Return tag.CountEnd FunctionPublic NotInheritable Class LEAD_VARSPublic Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"End Class
Raster .NET | C API | C++ Class Library | JavaScript HTML5
Document .NET | C API | C++ Class Library | JavaScript HTML5
Medical .NET | C API | C++ Class Library | JavaScript HTML5
Medical Web Viewer .NET
