public void StartCompress(int width,int height,int bitsPerPixel,RasterByteOrder order,RasterViewPerspective viewPerspective,int inputDataLength,IntPtr outputData,int outputDataLength,CodecsCompression compression,CodecsCompressDataCallback callback)
- (BOOL)startCompress:(NSInteger)widthheight:(NSInteger)heightbitsPerPixel:(NSInteger)bitsPerPixelorder:(LTRasterByteOrder)orderviewPerspective:(LTRasterViewPerspective)viewPerspectiveinputDataLength:(NSUInteger)inputDataLengthoutputData:(unsigned char *)outputDataoutputDataLength:(NSUInteger)outputDataLengthcompression:(LTCodecsCompression)compressioncallback:(nullable LTCodecsCompressDataCallback)callbackerror:(NSError **)error
public:void StartCompress(int width,int height,int bitsPerPixel,RasterByteOrder order,RasterViewPerspective viewPerspective,int inputDataLength,IntPtr outputData,int outputDataLength,CodecsCompression compression,CodecsCompressDataCallback^ callback)
def StartCompress(self,width,height,bitsPerPixel,order,viewPerspective,inputDataLength,outputData,outputDataLength,compression,callback):
width
The image being compressed width in pixels.
height
The image being compressed height in pixels.
bitsPerPixel
The image being compressed bits/pixel value.
order
The image being compressed byte order.
viewPerspective
The image being compressed view perspective value.
inputDataLength
Size in bytes of the input image data.
outputData
Pointer to unmanaged memory buffer will be filled with the compressed data.
outputDataLength
Size of outputData in bytes.
compression
Type of compression to use. Valid values are:
| Value | Meaning |
|---|---|
| CodecsCompression.Cmp | LEAD CMP compression format |
| CodecsCompression.Jpeg444 | JPEG File Interchange Format using YUV 4:4:4 color spacing |
| CodecsCompression.Jpeg422 | JPEG File Interchange Format using YUV 4:2:2 color spacing |
| CodecsCompression.Jpeg411 | JPEG File Interchange Format using YUV 4:1:1 color spacing |
| CodecsCompression.TifJpeg444 | JPEG JTIF using YUV 4:4:4 color spacing |
| CodecsCompression.TifJpeg422 | JPEG JTIF using YUV 4:2:2 color spacing |
| CodecsCompression.TifJpeg411 | JPEG JTIF using YUV 4:1:1 color spacing |
| CodecsCompression.Lead0 | LEAD 1 bit, lossless compression |
| CodecsCompression.Lead1 | LEAD 1 bit, excellent compression |
| CodecsCompression.TiffCcitt | TIFF CCITT |
| CodecsCompression.TiffCcittG3Fax1Dim | CCITT Group 3 one dimensional |
| CodecsCompression.TiffCcittG3Fax2Dim | CCITT Group 3 two dimensional |
| CodecsCompression.TiffCcittG4Fax | CCITT Group 4 two dimensional |
callback
The callback method responsible for writing or handling the compressed data.
This method initializes the buffered compression engine. The compression is then carried out using the Compress method. It is ended by the StopCompress method.
If order is set to RasterByteOrder.Bgr and viewPerspective is RasterViewPerspective.TopLeft then the data that you put into the input buffer must be RasterByteOrder.Bgr and loaded from top left.
The compression process starts after the first call to Compress. The callback is called when the output buffer is filled with compressed data or after completing the compression process. callback is responsible for emptying the output buffer - storing it, sending it, or doing other processing.
The following is a flow chart that shows the relationship of these methods:

Call StopCompress to end the compression process started by a call to StartCompress.
The quality factor of the compressed data is obtained as follows:
This method does not support signed data images.
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 pixelRasterImage 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 paddingint 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 16byte[] 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 imageimage.Access();// Initialize the compression enginecodecs.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 dataint i = 0;while (i < image.Height) // i is incremented at the end{// Compression of the 16-line chunk starts hereint j = 0;int inBufferIndex = 0;while ((i + j) < image.Height && j < 16){// Get one line at timeimage.GetRow(i + j, inBuffer, inBufferIndex, lineBytes);// Move to next lineinBufferIndex += lineBytes;j++;}// This is the main function that will do the actual Compressioncodecs.Compress(inBuffer, 0);i += 16;}// Reset the compression enginecodecs.StopCompress();// Release the image and close the fileimage.Release();_compressStream.Close();// Clean upcodecs.Dispose();}FileStream _compressStream;byte[] _compressBuffer;bool CodecsCompressDataCallback(int width, int height, int bitsPerPixel, RasterByteOrder order, RasterViewPerspective viewPerspective, RasterNativeBuffer buffer){// Write data to the fileif (_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:\LEADTOOLS23\Resources\Images";}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
