THotPDF.OptimizeLoadedImagesByVisualCost 方法
對符合條件的已載入 JPEG 與 JPEG 2000 影像執行有界品質搜尋,採用同時滿足品質與節省限制中成本最低的候選
宣告
function OptimizeLoadedImagesByVisualCost(
const Options: THPDFImageRecompressionCostOptions;
out AInfo: THPDFImageRecompressionCostInfo): Integer;
成本模型
每個編碼候選都會被解碼,透過取樣的亮度與色度殘差,在正規化的 0 到 100 感知誤差刻度上與解碼後的來源比較
感知誤差高於 MaximumPerceptualError 或節省位元組低於 MinimumSavingsBytes 的候選,在評分前就會被剔除
score = VisualErrorWeight * sqr(error / MaximumPerceptualError)
+ ByteCostWeight * (candidateBytes / sourceBytes)
分數最低者勝出;分數相同時先比較較小的編碼大小,再比較較高的品質,因此重複執行會得到相同輸出
THPDFImageRecompressionCostOptions
MinimumQuality、MaximumQuality 與 QualityStep 定義有界的品質嘗試;即使步長無法整除範圍,最大品質也一定會被納入
SampleStride 控制 1 到 64 的確定性像素子取樣;兩個非負權重讓呼叫端自行偏重視覺保真或精簡輸出
THPDFImageRecompressionCostOptions.Default 以 10 為步長搜尋 30 到 90 的品質、把感知誤差上限設為 3、要求至少節省 1 個位元組、每個維度每 4 個像素取樣一點,並讓視覺誤差與位元組成本等權
THPDFImageRecompressionCostInfo
結果回報掃描與符合條件的影像數、JPEG 與 JPEG 2000 改寫次數、編碼嘗試次數、因視覺與位元組成本被剔除的次數、入選品質總計、可接受的最大感知誤差、位元組總計,以及 DeterministicSelection 狀態
安全性
影像遮罩、色彩鍵遮罩、特別色、Lab 影像與非 RGB 的 ICCBased 來源維持不變;可轉換的校準 RGB 來源則保留明確的校準輸出色彩空間
每個影像與每輪編碼嘗試前都會檢查取消狀態;除非已選出完整的可用候選,否則不會替換任何來源串流