VintaSoft Imaging .NET SDK 14.0: Документация для .NET разработчика
В этом разделе
    PDF: Использование MRC сжатия для кодирования изображений документов в PDF формат
    В этом разделе

    1. Общие принципы и применимость MRC сжатия

    MRC (Mixed Raster Content) сжатие - технология сжатия цветного изображения путем разделения изображения на слои с существенно различными характеристиками. В зависимости от характеристик слоя он сжимается с помощью наиболее эффективного и аккуратного алгоритма сжатия.

    Наилучшим методом достижения максимальной степени сжатия при сохранении приемлемого качества является сжатие различных областей изображения в соответствии с их индивидуальными характеристиками. Двухуровневые детали, связанные с текстом и линейной графикой, будут сжиматься с использованием подхода, в котором большое внимание уделяется сохранению деталей и структуры входных изображений. Непрерывные тоновые изображения и многоуровневые непрерывные тоновые цвета сжимаются с помощью подхода, в котором большое внимание уделяется сохранению плавности и точности цветов.

    Вот C#/VB.NET код, который демонстрирует, как изображение разделяется на слои с помощью алгоритма MRC сжатия:

    MRC сжатие применимо только для цветных изображений и идеально подходит для сжатия отсканированных цветных документов. Сжатие эффективно работает с цветными изображениями документов с текстом, линейной графикой и полноцветными изображениями. MRC сжатие использует различные алгоритмы сжатия для разных видов графики, что дает наилучшие результаты сжатия, в отличие от ситуации, когда ко всему изображению применяется один алгоритм сжатия.


    2. Использование MRC сжатия для кодирования изображений в PDF формат

    MRC сжатие используется для кодирования одного или нескольких цветных изображений в PDF формат. Представленный алгоритм обеспечивает сжатие с потерями.

    Сборка Vintasoft.Imaging.Pdf.Mrc.dll содержит классы, отвечающие за кодирование изображений в PDF с использованием MRC сжатия:
    Свойство PdfMrcCompressionSettings.EnableMrcCompression определяет необходимость использования MRC сжатия для кодирования изображения в PDF формат. Значение False означает, что класс PdfMrcEncoder будет выполнять кодирование изображения методами базового класса PdfEncoder, т. е. используя обычный (только для изображений) алгоритм сжатия.

    Следующие плагины обязательны для использования MRC сжатия:
    Для достижения наилучших результатов сжатия и качества рекомендуется использовать следующие плагины:
    В следующем примере показано, как закодировать коллекцию изображений в PDF документ с помощью MRC сжатия:
    public static void EncodeImagesUseMrc(Vintasoft.Imaging.ImageCollection images, string pdfFilename)
    {
        // create PDF MRC encoder
        Vintasoft.Imaging.Codecs.Encoders.PdfMrcEncoder encoder = 
            new Vintasoft.Imaging.Codecs.Encoders.PdfMrcEncoder();
        
        // set MRC compression settings
        SetCompressionSettings(encoder.MrcCompressionSettings);
        
        // save images to PDF use MRC compression
        images.SaveSync(pdfFilename, encoder);
    }
    
    private static void SetCompressionSettings(Vintasoft.Imaging.Codecs.Encoders.PdfMrcCompressionSettings settings)
    {
        // background layer
        settings.CreateBackgroundLayer = true;
        settings.BackgroundLayerCompression = 
            Vintasoft.Imaging.Pdf.PdfCompression.Jpeg | Vintasoft.Imaging.Pdf.PdfCompression.Zip;
        settings.BackgroundLayerCompressionSettings.JpegQuality = 35;
    
        // images layer, images placed to background layer
        settings.ImageSegmentation = 
            new Vintasoft.Imaging.ImageProcessing.Info.ImageSegmentationCommand();
        settings.CreateImagesLayer = false;
    
        // mask layer
        settings.HiQualityMask = true;
        settings.MaskCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jbig2;
        settings.MaskCompressionSettings.Jbig2Settings.Lossy = true;
    
        // front layer
        settings.CreateFrontLayer = true;
        settings.HiQualityFrontLayer = true;
        settings.FrontLayerCompression = 
            Vintasoft.Imaging.Pdf.PdfCompression.Jpeg | 
            Vintasoft.Imaging.Pdf.PdfCompression.Zip;
        settings.FrontLayerCompressionSettings.JpegQuality = 25;
    }
    
    Public Shared Sub EncodeImagesUseMrc(images As Vintasoft.Imaging.ImageCollection, pdfFilename As String)
        ' create PDF MRC encoder
        Dim encoder As New Vintasoft.Imaging.Codecs.Encoders.PdfMrcEncoder()
    
        ' set MRC compression settings
        SetCompressionSettings(encoder.MrcCompressionSettings)
    
        ' save images to PDF use MRC compression
        images.SaveSync(pdfFilename, encoder)
    End Sub
    
    Private Shared Sub SetCompressionSettings(settings As Vintasoft.Imaging.Codecs.Encoders.PdfMrcCompressionSettings)
        ' background layer
        settings.CreateBackgroundLayer = True
        settings.BackgroundLayerCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jpeg Or Vintasoft.Imaging.Pdf.PdfCompression.Zip
        settings.BackgroundLayerCompressionSettings.JpegQuality = 35
    
        ' images layer, images placed to background layer
        settings.ImageSegmentation = New Vintasoft.Imaging.ImageProcessing.Info.ImageSegmentationCommand()
        settings.CreateImagesLayer = False
    
        ' mask layer
        settings.HiQualityMask = True
        settings.MaskCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jbig2
        settings.MaskCompressionSettings.Jbig2Settings.Lossy = True
    
        ' front layer
        settings.CreateFrontLayer = True
        settings.HiQualityFrontLayer = True
        settings.FrontLayerCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jpeg Or Vintasoft.Imaging.Pdf.PdfCompression.Zip
        settings.FrontLayerCompressionSettings.JpegQuality = 25
    End Sub
    



    2.1. Слои и алгоритмы, используемые при MRC сжатии

    При MRC сжатии используется четыре слоя:


    Параметры и алгоритм сжатия для каждого слоя задаются индивидуально, каждый слой может быть отключен.

    Для анализа исходного изображения используются следующие дополнительные алгоритмы:

    2.2. Настройки сжатия для фонового слоя

    Следующие свойства определяют, как компоновать и сжимать фоновый слой:
    Фоновый слой обычно хранит не очень важную информацию, поэтому его рекомендуется сжимать с помощью алгоритмов сжатия с потерями, таких как Jpeg+ZIP или Jpeg2000.


    2.3. Настройки сжатия для слоя изображений

    Следующие свойства определяют, как компоновать и сжимать слой изображений:
    Обработку и поиск полноцветных изображений можно отключить, установив значение свойств PdfMrcCompressionSettings.ImageSegmentation и PdfMrcCompressionSettings.ImageRegions равным null.

    Слой изображений хранит полноцветные изображения, поэтому рекомендуется сжимать его с помощью алгоритмов Jpeg+ZIP или Jpeg2000 с приемлемой потерей качества.

    Важно! Если значение свойства PdfMrcCompressionSettings.CreateImagesLayer установлено в False (полноцветные изображения помещаются на фоновый слой), то качеством закодированных изображений можно управлять с помощью настроек сжатия фонового слоя: PdfMrcCompressionSettings.BackgroundLayerCompression, PdfMrcCompressionSettings.BackgroundLayerCompressionSettings.

    ImageSegmentationCommand имеет различные настройки, позволяющие установить качество, чувствительность и точность поиска полноцветных изображений.


    2.4. Настройки сжатия для слоя маски

    Следующие свойства определяют, как компоновать и сжимать слой маски
    Важно! Прямоугольник, который распознается как полноцветное изображение, будет исключен из слоя маски (см. свойства PdfMrcCompressionSettings.ImageRegions и PdfMrcCompressionSettings.ImageSegmentation).

    По умолчанию для создания слоя маски используется бинаризация изображения с автоматическим определением порога, и в большинстве случаев она обеспечивает хорошие результаты сжатия. Для получения наилучших результатов сжатия следует использовать различные алгоритмы бинаризации для разных типов изображений документов.

    Слой маски хранит черно-белое изображение, поэтому рекомендуется сжимать его с помощью алгоритма сжатия Jbig2 или CCITT.


    2.5. Настройки сжатия для лицевого слоя

    Следующие свойства определяют, как компоновать и сжимать лицевой слой:
    Лицевой слой хранит палитровое изображение, поэтому его можно сжимать с помощью алгоритма ZIP. Однако в случае, когда текст имеет большое количество различных цветов или применяется высокое цветовое разрешение (PdfMrcCompressionSettings.HiQualityFrontLayer), то наилучшие результаты с приемлемой потерей качества дают алгоритмы сжатия Jpeg+ZIP или Jpeg2000.


    2.6. Рекомендуемые параметры MRC сжатия для различных типов изображений документов

    Изображения документов можно классифицировать по следующим критериям:
    Вот C#/VB.NET код, который демонстрирует, как сжать изображения документов, содержащие текст и картинки, используя алгоритм MRC сжатия и получая в результате изображения высокого качества:
    public static void SetSetting_DocumentWithImagesHiQuality(
        Vintasoft.Imaging.Codecs.Encoders.PdfMrcCompressionSettings settings)
    {
        settings.CreateBackgroundLayer = true;
        settings.BackgroundLayerCompression = 
            Vintasoft.Imaging.Pdf.PdfCompression.Jpeg | 
            Vintasoft.Imaging.Pdf.PdfCompression.Zip;
        settings.BackgroundLayerCompressionSettings.JpegQuality = 60;
    
        settings.ImageSegmentation =
            new Vintasoft.Imaging.ImageProcessing.Info.ImageSegmentationCommand();
        settings.CreateImagesLayer = false;
    
        settings.HiQualityMask = true;
        settings.MaskCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jbig2;
        settings.MaskCompressionSettings.Jbig2Settings.Lossy = true;
    
        settings.CreateFrontLayer = true;
        settings.HiQualityFrontLayer = true;
        settings.FrontLayerCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jpeg2000;
        settings.FrontLayerCompressionSettings.Jpeg2000Settings.CompressionRatio = 300 * 3;
        settings.FrontLayerCompressionSettings.Jpeg2000Settings.CompressionType = 
            Vintasoft.Imaging.Codecs.ImageFiles.Jpeg2000.Jpeg2000CompressionType.Lossy;
    }
    
    Public Shared Sub SetSetting_DocumentWithImagesHiQuality(settings As Vintasoft.Imaging.Codecs.Encoders.PdfMrcCompressionSettings)
        settings.CreateBackgroundLayer = True
        settings.BackgroundLayerCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jpeg Or Vintasoft.Imaging.Pdf.PdfCompression.Zip
        settings.BackgroundLayerCompressionSettings.JpegQuality = 60
    
        settings.ImageSegmentation = New Vintasoft.Imaging.ImageProcessing.Info.ImageSegmentationCommand()
        settings.CreateImagesLayer = False
    
        settings.HiQualityMask = True
        settings.MaskCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jbig2
        settings.MaskCompressionSettings.Jbig2Settings.Lossy = True
    
        settings.CreateFrontLayer = True
        settings.HiQualityFrontLayer = True
        settings.FrontLayerCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jpeg2000
        settings.FrontLayerCompressionSettings.Jpeg2000Settings.CompressionRatio = 300 * 3
        settings.FrontLayerCompressionSettings.Jpeg2000Settings.CompressionType = Vintasoft.Imaging.Codecs.ImageFiles.Jpeg2000.Jpeg2000CompressionType.Lossy
    End Sub
    


    Вот C#/VB.NET код, который демонстрирует, как сжать изображения документов, содержащие текст и картинки, используя алгоритм MRC сжатия и получая в результате изображения нормального качества:
    public static void SetSetting_DocumentWithImagesNormal(
        Vintasoft.Imaging.Codecs.Encoders.PdfMrcCompressionSettings settings)
    {
        settings.CreateBackgroundLayer = true;
        settings.BackgroundLayerCompression = 
            Vintasoft.Imaging.Pdf.PdfCompression.Jpeg | 
            Vintasoft.Imaging.Pdf.PdfCompression.Zip;
        settings.BackgroundLayerCompressionSettings.JpegQuality = 35;
    
        settings.ImageSegmentation = 
            new Vintasoft.Imaging.ImageProcessing.Info.ImageSegmentationCommand();
        settings.CreateImagesLayer = false;
    
        settings.HiQualityMask = true;
        settings.MaskCompression = 
            Vintasoft.Imaging.Pdf.PdfCompression.Jbig2;
        settings.MaskCompressionSettings.Jbig2Settings.Lossy = true;
    
        settings.CreateFrontLayer = true;
        settings.HiQualityFrontLayer = true;
        settings.FrontLayerCompression = 
            Vintasoft.Imaging.Pdf.PdfCompression.Jpeg | 
            Vintasoft.Imaging.Pdf.PdfCompression.Zip;
        settings.FrontLayerCompressionSettings.JpegQuality = 25;
        settings.FrontLayerCompressionSettings.Jpeg2000Settings.CompressionRatio = 400 * 3;
        settings.FrontLayerCompressionSettings.Jpeg2000Settings.CompressionType = 
            Vintasoft.Imaging.Codecs.ImageFiles.Jpeg2000.Jpeg2000CompressionType.Lossy;
    }
    
    Public Shared Sub SetSetting_DocumentWithImagesNormal(settings As Vintasoft.Imaging.Codecs.Encoders.PdfMrcCompressionSettings)
        settings.CreateBackgroundLayer = True
        settings.BackgroundLayerCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jpeg Or Vintasoft.Imaging.Pdf.PdfCompression.Zip
        settings.BackgroundLayerCompressionSettings.JpegQuality = 35
    
        settings.ImageSegmentation = New Vintasoft.Imaging.ImageProcessing.Info.ImageSegmentationCommand()
        settings.CreateImagesLayer = False
    
        settings.HiQualityMask = True
        settings.MaskCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jbig2
        settings.MaskCompressionSettings.Jbig2Settings.Lossy = True
    
        settings.CreateFrontLayer = True
        settings.HiQualityFrontLayer = True
        settings.FrontLayerCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jpeg Or Vintasoft.Imaging.Pdf.PdfCompression.Zip
        settings.FrontLayerCompressionSettings.JpegQuality = 25
        settings.FrontLayerCompressionSettings.Jpeg2000Settings.CompressionRatio = 400 * 3
        settings.FrontLayerCompressionSettings.Jpeg2000Settings.CompressionType = Vintasoft.Imaging.Codecs.ImageFiles.Jpeg2000.Jpeg2000CompressionType.Lossy
    End Sub
    


    Вот C#/VB.NET код, который демонстрирует, как сжать изображения документов, содержащие текст и картинки, используя алгоритм MRC сжатия и получая в результате изображения с высокой степенью сжатия:
    public static void SetSetting_DocumentWithImagesHiCompression(
        Vintasoft.Imaging.Codecs.Encoders.PdfMrcCompressionSettings settings)
    {
        settings.CreateBackgroundLayer = true;
        settings.BackgroundLayerCompression = 
            Vintasoft.Imaging.Pdf.PdfCompression.Jpeg | 
            Vintasoft.Imaging.Pdf.PdfCompression.Zip;
        settings.BackgroundLayerCompressionSettings.JpegQuality = 20;
    
        settings.ImageSegmentation = 
            new Vintasoft.Imaging.ImageProcessing.Info.ImageSegmentationCommand();
        settings.CreateImagesLayer = false;
    
        settings.HiQualityMask = false;
        settings.MaskCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jbig2;
        settings.MaskCompressionSettings.Jbig2Settings.Lossy = true;
    
        settings.CreateFrontLayer = true;
        settings.HiQualityFrontLayer = false;
        settings.FrontLayerCompression = Vintasoft.Imaging.Pdf.PdfCompression.Zip;
    }
    
    Public Shared Sub SetSetting_DocumentWithImagesHiCompression(settings As Vintasoft.Imaging.Codecs.Encoders.PdfMrcCompressionSettings)
        settings.CreateBackgroundLayer = True
        settings.BackgroundLayerCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jpeg Or Vintasoft.Imaging.Pdf.PdfCompression.Zip
        settings.BackgroundLayerCompressionSettings.JpegQuality = 20
    
        settings.ImageSegmentation = New Vintasoft.Imaging.ImageProcessing.Info.ImageSegmentationCommand()
        settings.CreateImagesLayer = False
    
        settings.HiQualityMask = False
        settings.MaskCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jbig2
        settings.MaskCompressionSettings.Jbig2Settings.Lossy = True
    
        settings.CreateFrontLayer = True
        settings.HiQualityFrontLayer = False
        settings.FrontLayerCompression = Vintasoft.Imaging.Pdf.PdfCompression.Zip
    End Sub
    


    Вот C#/VB.NET код, который демонстрирует, как сжать изображения документов, содержащие только текст, используя алгоритм MRC сжатия и получая в результате изображения высокого качества:
    Изображения документов, не содержащие полноцветных изображений, высокого качества:
    public static void SetSetting_DocumentNoImagesHiQuality(
        Vintasoft.Imaging.Codecs.Encoders.PdfMrcCompressionSettings settings)
    {
        settings.CreateBackgroundLayer = true;
        settings.BackgroundLayerCompression = 
            Vintasoft.Imaging.Pdf.PdfCompression.Jpeg | 
            Vintasoft.Imaging.Pdf.PdfCompression.Zip;
        settings.BackgroundLayerCompressionSettings.JpegQuality = 30;
    
        settings.ImageSegmentation = null;
        settings.CreateImagesLayer = false;
    
        settings.HiQualityMask = true;
        settings.MaskCompression = 
            Vintasoft.Imaging.Pdf.PdfCompression.Jbig2;
        settings.MaskCompressionSettings.Jbig2Settings.Lossy = true;
    
        settings.CreateFrontLayer = true;
        settings.HiQualityFrontLayer = true;
        settings.FrontLayerCompression = 
            Vintasoft.Imaging.Pdf.PdfCompression.Jpeg2000;
        settings.FrontLayerCompressionSettings.Jpeg2000Settings.CompressionRatio = 300 * 3;
        settings.FrontLayerCompressionSettings.Jpeg2000Settings.CompressionType = 
            Vintasoft.Imaging.Codecs.ImageFiles.Jpeg2000.Jpeg2000CompressionType.Lossy;
    }
    
    Public Shared Sub SetSetting_DocumentNoImagesHiQuality(settings As Vintasoft.Imaging.Codecs.Encoders.PdfMrcCompressionSettings)
        settings.CreateBackgroundLayer = True
        settings.BackgroundLayerCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jpeg Or Vintasoft.Imaging.Pdf.PdfCompression.Zip
        settings.BackgroundLayerCompressionSettings.JpegQuality = 30
    
        settings.ImageSegmentation = Nothing
        settings.CreateImagesLayer = False
    
        settings.HiQualityMask = True
        settings.MaskCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jbig2
        settings.MaskCompressionSettings.Jbig2Settings.Lossy = True
    
        settings.CreateFrontLayer = True
        settings.HiQualityFrontLayer = True
        settings.FrontLayerCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jpeg2000
        settings.FrontLayerCompressionSettings.Jpeg2000Settings.CompressionRatio = 300 * 3
        settings.FrontLayerCompressionSettings.Jpeg2000Settings.CompressionType = Vintasoft.Imaging.Codecs.ImageFiles.Jpeg2000.Jpeg2000CompressionType.Lossy
    End Sub
    


    Вот C#/VB.NET код, который демонстрирует, как сжать изображения документов, содержащие только текст, используя алгоритм MRC сжатия и получая в результате изображения с нормальным качеством:
    public static void SetSetting_DocumentNoImagesNormal(
        Vintasoft.Imaging.Codecs.Encoders.PdfMrcCompressionSettings settings)
    {
        settings.CreateBackgroundLayer = true;
        settings.BackgroundLayerCompression = 
            Vintasoft.Imaging.Pdf.PdfCompression.Jpeg | 
            Vintasoft.Imaging.Pdf.PdfCompression.Zip;
        settings.BackgroundLayerCompressionSettings.JpegQuality = 25;
    
        settings.ImageSegmentation = null;
        settings.CreateImagesLayer = false;
    
        settings.HiQualityMask = true;
        settings.MaskCompression = 
            Vintasoft.Imaging.Pdf.PdfCompression.Jbig2;
        settings.MaskCompressionSettings.Jbig2Settings.Lossy = true;
    
        settings.CreateFrontLayer = true;
        settings.HiQualityFrontLayer = false;
        settings.FrontLayerCompression = 
            Vintasoft.Imaging.Pdf.PdfCompression.Jpeg2000;
        settings.FrontLayerCompressionSettings.Jpeg2000Settings.CompressionRatio = 350 * 3;
        settings.FrontLayerCompressionSettings.Jpeg2000Settings.CompressionType = 
            Vintasoft.Imaging.Codecs.ImageFiles.Jpeg2000.Jpeg2000CompressionType.Lossy;
    }
    
    Public Shared Sub SetSetting_DocumentNoImagesNormal(settings As Vintasoft.Imaging.Codecs.Encoders.PdfMrcCompressionSettings)
        settings.CreateBackgroundLayer = True
        settings.BackgroundLayerCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jpeg Or Vintasoft.Imaging.Pdf.PdfCompression.Zip
        settings.BackgroundLayerCompressionSettings.JpegQuality = 25
    
        settings.ImageSegmentation = Nothing
        settings.CreateImagesLayer = False
    
        settings.HiQualityMask = True
        settings.MaskCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jbig2
        settings.MaskCompressionSettings.Jbig2Settings.Lossy = True
    
        settings.CreateFrontLayer = True
        settings.HiQualityFrontLayer = False
        settings.FrontLayerCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jpeg2000
        settings.FrontLayerCompressionSettings.Jpeg2000Settings.CompressionRatio = 350 * 3
        settings.FrontLayerCompressionSettings.Jpeg2000Settings.CompressionType = Vintasoft.Imaging.Codecs.ImageFiles.Jpeg2000.Jpeg2000CompressionType.Lossy
    End Sub
    


    Вот C#/VB.NET код, который демонстрирует, как сжать изображения документов, содержащие только текст, используя алгоритм MRC сжатия и получая в результате изображения с высокой степенью сжатия:
    public static void SetSetting_DocumentNoImagesHiCompression(
        Vintasoft.Imaging.Codecs.Encoders.PdfMrcCompressionSettings settings)
    {
        settings.CreateBackgroundLayer = true;
        settings.BackgroundLayerCompression = 
            Vintasoft.Imaging.Pdf.PdfCompression.Jpeg | 
            Vintasoft.Imaging.Pdf.PdfCompression.Zip;
        settings.BackgroundLayerCompressionSettings.JpegQuality = 20;
    
        settings.ImageSegmentation = null;
        settings.CreateImagesLayer = false;
    
        settings.HiQualityMask = false;
        settings.MaskCompression = 
            Vintasoft.Imaging.Pdf.PdfCompression.Jbig2;
        settings.MaskCompressionSettings.Jbig2Settings.Lossy = true;
    
        settings.CreateFrontLayer = true;
        settings.HiQualityFrontLayer = false;
        settings.FrontLayerCompression = 
            Vintasoft.Imaging.Pdf.PdfCompression.Jpeg2000;
        settings.FrontLayerCompressionSettings.Jpeg2000Settings.CompressionRatio = 450 * 3;
        settings.FrontLayerCompressionSettings.Jpeg2000Settings.CompressionType = 
            Vintasoft.Imaging.Codecs.ImageFiles.Jpeg2000.Jpeg2000CompressionType.Lossy;
    }
    
    Public Shared Sub SetSetting_DocumentNoImagesHiCompression(settings As Vintasoft.Imaging.Codecs.Encoders.PdfMrcCompressionSettings)
        settings.CreateBackgroundLayer = True
        settings.BackgroundLayerCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jpeg Or Vintasoft.Imaging.Pdf.PdfCompression.Zip
        settings.BackgroundLayerCompressionSettings.JpegQuality = 20
    
        settings.ImageSegmentation = Nothing
        settings.CreateImagesLayer = False
    
        settings.HiQualityMask = False
        settings.MaskCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jbig2
        settings.MaskCompressionSettings.Jbig2Settings.Lossy = True
    
        settings.CreateFrontLayer = True
        settings.HiQualityFrontLayer = False
        settings.FrontLayerCompression = Vintasoft.Imaging.Pdf.PdfCompression.Jpeg2000
        settings.FrontLayerCompressionSettings.Jpeg2000Settings.CompressionRatio = 450 * 3
        settings.FrontLayerCompressionSettings.Jpeg2000Settings.CompressionType = Vintasoft.Imaging.Codecs.ImageFiles.Jpeg2000.Jpeg2000CompressionType.Lossy
    End Sub
    



    Примеры сжатия. Визуальное сравнение качества сжатия.

    Визуальное сравнение качества сжатия проводилось с использованием 4 различных изображений:
    После применения MRC сжатия с выбранными настройками исходные изображения были сжаты с помощью кодеков JPEG и JPEG2000, чтобы размер сжатых исходных файлов соответствовал размеру MRC сжатого файла.


    Сравнение фрагментов сжатых изображений: rasterized_noImages , 42.79MB без сжатия:

    PNG
    3.664MB
    1:12
    PDF MRC
    0.246MB
    1:174
    JPEG2000
    0.252MB
    1:170
    JPEG
    0.379MB
    1:113


    Сравнение фрагментов сжатых изображений: rasterized_withImages , 20.13MB без сжатия:

    PNG
    3.472MB
    1:6
    PDF MRC
    0.144MB
    1:139
    JPEG2000
    0.147MB
    1:137
    JPEG
    0.170MB
    1:118


    Сравнение фрагментов сжатых изображений: scanned_noImages , 36.93MB без сжатия:

    PNG
    4.639MB
    1:8
    PDF MRC
    0.205MB
    1:180
    JPEG2000
    0.205MB
    1:180
    JPEG
    0.212MB
    1:174


    Сравнение фрагментов сжатых изображений: scanned_withImages , 6.61MB без сжатия:

    PNG
    2.75MB
    1:2.4
    PDF MRC
    0.112MB
    1:59
    JPEG2000
    0.114MB
    1:58
    JPEG
    0.118MB
    1:56