DownsampleImages

文件管理, 影像

描述

降低有效解析度超過 MaxDPI 之內嵌影像 XObject 的解析度。每個候選影像都會被解碼、在保持長寬比的前提下重新取樣,並在 Quality 大於 0 時重新編碼為 DCTDecode(JPEG)、在 Quality 為 0 時重新編碼為無損的 FlateDecode(PNG);影像串流、/Filter、/Width 與 /Height 項目會就地重寫

語法

Delphi

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

參數

MaxDPI解析度門檻,以 DPI 為單位;估計有效解析度高於此值的影像會被重新取樣。低於 24 的值會中止呼叫
Quality重新編碼所用的 JPEG 壓縮品質,介於 1 與 100 之間;傳 0 則以 PNG 無損方式重新編碼
Filter0 選擇 box 濾波器,會對來源像素區塊取平均;任何其他值則選擇雙線性重新取樣

傳回值

重寫的影像 XObject 數量;當 MaxDPI 低於 24 或沒有影像超過門檻時為 0

備註

有效解析度是以影像宣告的像素寬度對 Letter 寬度頁面來估計,因此這個處理傾向保守,有疑慮時會保留印刷品質的影像

宣告像素小於 8 x 8 的影像、解碼失敗的影像,以及重新取樣後大小不小於原始大小的影像,都會被略過而不使呼叫失敗

範例

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