THotPDF.OptimizeLoadedImagesByVisualCost Method

对符合条件的已加载 JPEG 和 JPEG 2000 图像执行有界的质量搜索,并采用同时满足质量与节省限制、成本最低的候选

声明

function OptimizeLoadedImagesByVisualCost(
    const Options: THPDFImageRecompressionCostOptions;
    out AInfo: THPDFImageRecompressionCostInfo): Integer;

Cost model

每个编码后的候选都会被解码,并通过采样的亮度与色度残差,在归一化的 0 到 100 感知误差尺度上与解码后的源图比较

Candidates above MaximumPerceptualError or below MinimumSavingsBytes are rejected before scoring

score = VisualErrorWeight * sqr(error / MaximumPerceptualError)
      + ByteCostWeight * (candidateBytes / sourceBytes)

得分最低者胜出;得分相同时依次选择编码体积更小、质量更高的候选,因此重复运行会得到相同的输出

THPDFImageRecompressionCostOptions

MinimumQuality、MaximumQuality 和 QualityStep 定义有界的质量试探;即使步长不能整除该区间,最高质量也一定会被包含在内

SampleStride 控制确定性的像素抽样,取值 1 到 64;两个非负权重让调用方可以偏向视觉保真度或更小的输出

THPDFImageRecompressionCostOptions.Default 以 10 为步长搜索质量 30 到 90,把感知误差限制在 3 以内,要求至少节省一个字节,在每个维度上每隔四个像素抽样一次,并对视觉误差和字节成本赋予相同权重

THPDFImageRecompressionCostInfo

结果会报告扫描的图像数和符合条件的图像数、JPEG 和 JPEG 2000 的改写次数、编码试探次数、因视觉误差和字节成本被拒绝的次数、所选质量总和、可接受的最大感知误差、字节总量,以及 DeterministicSelection 状态

Safety

图像蒙版、色键蒙版、专色、Lab 图像和非 RGB 的 ICCBased 来源保持不变,可转换的校准 RGB 来源则保留显式的校准输出颜色空间

每张图像和每次编码试探之前都会检查取消状态,只有选定了完整且被接受的候选,才会替换源流

资源与图像优化