function SelectPdfImageCodec(const Candidate: TPdfImageCodecCandidate;
AllowedCodecs: TPdfImageCodecs; MinimumSavingBytes: Int64 = 1): TPdfImageCodecDecision;
| Candidate | TPdfImageCodecCandidate |
| AllowedCodecs | TPdfImageCodecs |
| MinimumSavingBytes | Int64 |
TPdfImageCodecDecisionSelectPdfImageCodec — чистый помощник принятия решений, который сравнивает оценки EncodedBytes, записанные в кандидате, и возвращает, какой кодек должен хранить изображение
Каждый разрешённый кодек сначала проверяется на применимость: picJpeg требует отсутствия альфа-канала, небинарного изображения, 8 бит на компонент, 1, 3 или 4 компонентов, а также неизвестного или превышающего 256 числа уникальных цветов; picJpx требует небинарного изображения с не менее чем 8 битами на компонент и 1–4 компонентами; picCcittGroup4 требует бинарного изображения без альфа-канала, 1 бита на компонент и единственной компоненты; picFlate принимает не менее 1 бита на компонент и не менее одной компоненты
Среди подходящих кодеков побеждает наименьшее положительное значение EncodedBytes, а решение сообщает OriginalBytes, SelectedBytes и SavedBytes
ReplaceOriginal равно True, только когда победитель — не picKeepOriginal, а SavedBytes достигает MinimumSavingBytes; иначе решение сбрасывается в picKeepOriginal с нулевой экономией байтов
Decision := SelectPdfImageCodec(Candidate, [picJpeg, picJpx, picFlate], 1024);
if Decision.ReplaceOriginal then
ReEncode := Decision.Codec;