BitMiracle.LibJpeg.Classic.jpeg_compress_struct.jpeg_set_quality C# (CSharp) Method

jpeg_set_quality() public method

Constructs JPEG quantization tables appropriate for the indicated quality setting.
Note that the exact mapping from quality values to tables may change in future IJG releases as more is learned about DCT quantization.
public jpeg_set_quality ( int quality, bool force_baseline ) : void
quality int The quality value is expressed on the 0..100 scale recommended by IJG.
force_baseline bool If true, then the quantization table entries are constrained /// to the range 1..255 for full JPEG baseline compatibility. In the current implementation, /// this only makes a difference for quality settings below 25, and it effectively prevents /// very small/low quality files from being generated. The IJG decoder is capable of reading /// the non-baseline files generated at low quality settings when force_baseline is false, /// but other decoders may not be.
return void
        public void jpeg_set_quality(int quality, bool force_baseline)
        {
            /* Convert user 0-100 rating to percentage scaling */
            quality = jpeg_quality_scaling(quality);

            /* Set up standard quality tables */
            jpeg_set_linear_quality(quality, force_baseline);
        }

Usage Example

Example #1
0
        public void TestCompressorWithContextRows()
        {
            using (MemoryStream stream = new MemoryStream())
            {
                jpeg_compress_struct compressor = new jpeg_compress_struct(new jpeg_error_mgr());
                compressor.Image_height = 100;
                compressor.Image_width = 100;
                compressor.In_color_space = J_COLOR_SPACE.JCS_GRAYSCALE;
                compressor.Input_components = 1;
                compressor.jpeg_set_defaults();

                compressor.Dct_method = J_DCT_METHOD.JDCT_IFAST;
                compressor.Smoothing_factor = 94;
                compressor.jpeg_set_quality(75, true);
                compressor.jpeg_simple_progression();

                compressor.Density_unit = DensityUnit.Unknown;
                compressor.X_density = (short)96;
                compressor.Y_density = (short)96;

                compressor.jpeg_stdio_dest(stream);
                compressor.jpeg_start_compress(true);

                byte[][] rowForDecompressor = new byte[1][];
                int bytesPerPixel = 1;
                while (compressor.Next_scanline < compressor.Image_height)
                {
                    byte[] row = new byte[100 * bytesPerPixel]; // wasteful, but gets you 0 bytes every time - content is immaterial.
                    rowForDecompressor[0] = row;
                    compressor.jpeg_write_scanlines(rowForDecompressor, 1);
                }
                compressor.jpeg_finish_compress();

                byte[] bytes = stream.ToArray();

                string filename = "TestCompressorWithContextRows.jpg";
                File.WriteAllBytes(Tester.MapOutputPath(filename), bytes);
                FileAssert.AreEqual(Tester.MapExpectedPath(filename), Tester.MapOutputPath(filename));
            }
        }
All Usage Examples Of BitMiracle.LibJpeg.Classic.jpeg_compress_struct::jpeg_set_quality