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 來源則保留明確的校準輸出色彩空間

每個影像與每輪編碼嘗試前都會檢查取消狀態;除非已選出完整的可用候選,否則不會替換任何來源串流

資源與影像最佳化