DownsampleImages

Управление документами, Изображения

Описание

Снижает разрешение встроенных XObject-изображений, эффективное разрешение которых превышает MaxDPI. Каждое изображение-кандидат декодируется, пересэмплируется с сохранением пропорций и перекодируется как DCTDecode (JPEG) при Quality больше 0 или как FlateDecode без потерь (PNG) при Quality, равном 0; поток изображения и записи /Filter, /Width и /Height перезаписываются на месте

Синтаксис

Delphi

Function TPDFlib.DownsampleImages(MaxDPI, Quality, Filter: Integer): Integer;

Параметры

MaxDPIПорог разрешения в DPI; изображения с оценённым эффективным разрешением выше этого значения пересэмплируются. Значения ниже 24 прерывают вызов
QualityКачество сжатия JPEG от 1 до 100, используемое при перекодировании; передайте 0 для перекодирования без потерь в PNG
Filter0 выбирает блочный фильтр (box), усредняющий блоки исходных пикселей; любое другое значение выбирает билинейное пересэмплирование

Возвращаемые значения

Количество переписанных XObject-изображений или 0, когда MaxDPI ниже 24 или ни одно изображение не превысило порог

Примечания

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

Изображения меньше 8 x 8 заявленных пикселей, изображения, которые не удалось декодировать, и изображения, пересэмплированный размер которых не оказался бы меньше исходного, пропускаются без сбоя вызова

Пример

PDF.LoadFromFile('scan.pdf', '');
PDF.DownsampleImages(150, 80, 0);
PDF.SaveToFile('scan-compressed.pdf');