BitMiracle.LibJpeg.Jpeg.Compress C# (CSharp) Method

Compress() public method

Compresses any image described as ICompressSource to JPEG
public Compress ( IRawImage source, Stream output ) : void
source IRawImage Contains description of input image
output Stream Stream for output of compressed JPEG
return void
        public void Compress(IRawImage source, Stream output)
        {
            if (source == null)
                throw new ArgumentNullException("source");

            if (output == null)
                throw new ArgumentNullException("output");

            m_compressor.Image_width = source.Width;
            m_compressor.Image_height = source.Height;
            m_compressor.In_color_space = (J_COLOR_SPACE)source.Colorspace;
            m_compressor.Input_components = source.ComponentsPerPixel;
            //m_compressor.Data_precision = source.DataPrecision;

            m_compressor.jpeg_set_defaults();

            //we need to set density parameters after setting of default jpeg parameters
            //m_compressor.Density_unit = source.DensityUnit;
            //m_compressor.X_density = (short)source.DensityX;
            //m_compressor.Y_density = (short)source.DensityY;

            applyParameters(m_compressionParameters);

            // Specify data destination for compression
            m_compressor.jpeg_stdio_dest(output);

            // Start compression
            m_compressor.jpeg_start_compress(true);

            // Process  pixels
            source.BeginRead();
            while (m_compressor.Next_scanline < m_compressor.Image_height)
            {
                byte[] row = source.GetPixelRow();
                if (row == null)
                    throw new InvalidDataException("Row of pixels is null");

                byte[][] rowForDecompressor = new byte[1][];
                rowForDecompressor[0] = row;
                m_compressor.jpeg_write_scanlines(rowForDecompressor, 1);
            }
            source.EndRead();

            // Finish compression and release memory
            m_compressor.jpeg_finish_compress();
        }

Usage Example

Example #1
0
        private void compress(IRawImage source, CompressionParameters parameters)
        {
            Debug.Assert(source != null);

            if (!needCompressWith(parameters))
            {
                return;
            }

            m_compressedData        = new MemoryStream();
            m_compressionParameters = new CompressionParameters(parameters);

            Jpeg jpeg = new Jpeg();

            jpeg.CompressionParameters = m_compressionParameters;
            jpeg.Compress(source, m_compressedData);
        }
All Usage Examples Of BitMiracle.LibJpeg.Jpeg::Compress