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 無損方式重新編碼 |
| Filter | 0 選擇 box 濾波器,會對來源像素區塊取平均;任何其他值則選擇雙線性重新取樣 |
傳回值
重寫的影像 XObject 數量;當 MaxDPI 低於 24 或沒有影像超過門檻時為 0
備註
有效解析度是以影像宣告的像素寬度對 Letter 寬度頁面來估計,因此這個處理傾向保守,有疑慮時會保留印刷品質的影像
宣告像素小於 8 x 8 的影像、解碼失敗的影像,以及重新取樣後大小不小於原始大小的影像,都會被略過而不使呼叫失敗
範例
PDF.LoadFromFile('scan.pdf', '');
PDF.DownsampleImages(150, 80, 0);
PDF.SaveToFile('scan-compressed.pdf');