function SelectPdfImageCodec(const Candidate: TPdfImageCodecCandidate;
AllowedCodecs: TPdfImageCodecs; MinimumSavingBytes: Int64 = 1): TPdfImageCodecDecision;
| Candidate | TPdfImageCodecCandidate |
| AllowedCodecs | TPdfImageCodecs |
| MinimumSavingBytes | Int64 |
TPdfImageCodecDecisionSelectPdfImageCodec 是純決策輔助函式,會比較候選項上記錄的 EncodedBytes 估計值,並傳回應由哪個編碼器來儲存影像
每個允許的編碼器都會先檢查資格:picJpeg 要求無 alpha、非雙階影像、每個分量 8 位元、分量數為 1、3 或 4,且唯一色彩數未知或大於 256;picJpx 要求非雙階影像、每個分量至少 8 位元,且分量數為 1 到 4;picCcittGroup4 要求無 alpha 的雙階影像、每個分量 1 位元,且只有單一分量;picFlate 接受每個分量至少 1 位元且至少 1 個分量
在合格的編碼器中,由最小的正值 EncodedBytes 勝出,決策結果會回報 OriginalBytes、SelectedBytes 與 SavedBytes
只有當勝出者不是 picKeepOriginal 且 SavedBytes 達到 MinimumSavingBytes 時,ReplaceOriginal 才為 True;否則決策會重設為 picKeepOriginal,節省位元組數為零
Decision := SelectPdfImageCodec(Candidate, [picJpeg, picJpx, picFlate], 1024);
if Decision.ReplaceOriginal then
ReEncode := Decision.Codec;