PDFiumPas 文件

SelectPdfImageCodec 函式

單元: PDFium
從量測到的編碼器大小中,為單一影像挑選最小的合格重新編碼選項

Syntax

function SelectPdfImageCodec(const Candidate: TPdfImageCodecCandidate;
  AllowedCodecs: TPdfImageCodecs; MinimumSavingBytes: Int64 = 1): TPdfImageCodecDecision;

Parameters

CandidateTPdfImageCodecCandidate
AllowedCodecsTPdfImageCodecs
MinimumSavingBytesInt64

Return Value

TPdfImageCodecDecision

Description

SelectPdfImageCodec 是純決策輔助函式,會比較候選項上記錄的 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,節省位元組數為零

Remarks

Example

Decision := SelectPdfImageCodec(Candidate, [picJpeg, picJpx, picFlate], 1024);
if Decision.ReplaceOriginal then
  ReEncode := Decision.Codec;

See Also

TPdf.OptimizeImages, BuildToUnicodeCMap, TPdf.ImageInfo