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 |
| Filter | 0 выбирает блочный фильтр (box), усредняющий блоки исходных пикселей; любое другое значение выбирает билинейное пересэмплирование |
Возвращаемые значения
Количество переписанных XObject-изображений или 0, когда MaxDPI ниже 24 или ни одно изображение не превысило порог
Примечания
Эффективное разрешение оценивается по заявленной пиксельной ширине изображения относительно страницы шириной Letter, поэтому проход носит консервативный характер и изображения печатного качества в сомнительных случаях не трогаются
Изображения меньше 8 x 8 заявленных пикселей, изображения, которые не удалось декодировать, и изображения, пересэмплированный размер которых не оказался бы меньше исходного, пропускаются без сбоя вызова
Пример
PDF.LoadFromFile('scan.pdf', '');
PDF.DownsampleImages(150, 80, 0);
PDF.SaveToFile('scan-compressed.pdf');