function SelectPdfImageCodec(const Candidate: TPdfImageCodecCandidate;
AllowedCodecs: TPdfImageCodecs; MinimumSavingBytes: Int64 = 1): TPdfImageCodecDecision;
| Candidate | TPdfImageCodecCandidate |
| AllowedCodecs | TPdfImageCodecs |
| MinimumSavingBytes | Int64 |
TPdfImageCodecDecisionSelectPdfImageCodec je čistý rozhodovací helper, který porovná odhady EncodedBytes zaznamenané na kandidátovi a vrátí, který kodek má obrázek uložit
Každý povolený kodek se nejdřív zkontroluje na způsobilost: picJpeg vyžaduje žádnou alfu, nebilevelový obrázek, 8 bitů na komponentu, 1, 3 nebo 4 komponenty a neznámý nebo vyšší než 256 počet unikátních barev; picJpx vyžaduje nebilevelový obrázek s alespoň 8 bity na komponentu a 1 až 4 komponentami; picCcittGroup4 vyžaduje bilevelový obrázek bez alfy, 1 bit na komponentu a jedinou komponentu; picFlate přijme alespoň 1 bit na komponentu a alespoň 1 komponentu
Z mezi způsobilými kodeky vyhrává nejmenší kladná hodnota EncodedBytes a rozhodnutí hlásí OriginalBytes, SelectedBytes a SavedBytes
ReplaceOriginal je True jen tehdy, když vítězem není picKeepOriginal a SavedBytes dosáhne MinimumSavingBytes; jinak se rozhodnutí resetuje na picKeepOriginal s nulou ušetřených bajtů
Decision := SelectPdfImageCodec(Candidate, [picJpeg, picJpx, picFlate], 1024);
if Decision.ReplaceOriginal then
ReEncode := Decision.Codec;