DownsampleImages

文書管理, 画像

説明

実効解像度がMaxDPIを超える埋め込み画像XObjectの解像度を下げます。候補画像はそれぞれデコードされ、縦横比を保持してリサンプリングされた後、Qualityが0より大きい場合はDCTDecode(JPEG)として、Qualityが0の場合は可逆のFlateDecode(PNG)として再エンコードされます。画像ストリーム、/Filter、/Width、/Heightの各エントリはその場で書き換えられます

構文

Delphi

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

パラメータ

MaxDPIDPI単位の解像度しきい値。推定実効解像度がこの値を超える画像がリサンプリングされます。24未満の値を指定すると呼び出しは中断されます
Quality再エンコードに使用する1から100の間のJPEG圧縮品質。0を渡すと可逆PNGとして再エンコードされます
Filter0はボックスフィルターを選択し、ソースのピクセルブロックを平均します。それ以外の値はバイリニアリサンプリングを選択します

戻り値

書き換えられた画像XObjectの数。MaxDPIが24未満の場合、またはしきい値を超えた画像がなかった場合は0を返します

備考

実効解像度は、Letter幅のページに対する画像の宣言ピクセル幅から推定されるため、このパスは保守的に動作し、判断が難しい場合には印刷品質の画像がそのまま残されます

宣言ピクセル数が8 x 8未満の画像、デコードに失敗する画像、リサンプリング後のサイズが元より小さくならない画像はスキップされ、呼び出しは失敗しません

例

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