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 来源则保留显式的校准输出颜色空间
每张图像和每次编码试探之前都会检查取消状态,只有选定了完整且被接受的候选,才会替换源流