THotPDF.OptimizeLoadedImagesByVisualCost Method
Executa uma busca de qualidade limitada para imagens JPEG e JPEG 2000 carregadas elegíveis e adota o candidato de menor custo que satisfaz tanto os limites de qualidade quanto os de economia
Declaração
function OptimizeLoadedImagesByVisualCost(
const Options: THPDFImageRecompressionCostOptions;
out AInfo: THPDFImageRecompressionCostInfo): Integer;
Modelo de custo
Cada candidato codificado é decodificado e comparado com a origem decodificada por meio de resíduos de luma e croma amostrados em uma escala de erro perceptual normalizada de zero a cem
Candidatos acima de MaximumPerceptualError ou abaixo de MinimumSavingsBytes são rejeitados antes da pontuação
score = VisualErrorWeight * sqr(error / MaximumPerceptualError)
+ ByteCostWeight * (candidateBytes / sourceBytes)
A menor pontuação vence, seguida pelo menor tamanho codificado e depois pela maior qualidade quando as pontuações empatam, para que execuções repetidas usem a mesma saída
THPDFImageRecompressionCostOptions
MinimumQuality, MaximumQuality e QualityStep definem as tentativas de qualidade limitadas, e a qualidade máxima é sempre incluída mesmo quando o passo não divide o intervalo
SampleStride controla a subamostragem determinística de pixels de 1 a 64, enquanto os dois pesos não negativos permitem que os chamadores favoreçam fidelidade visual ou saída compacta
THPDFImageRecompressionCostOptions.Default pesquisa a qualidade de 30 a 90 em passos de 10, limita o erro perceptual a 3, exige um byte economizado, amostra cada quarto pixel em cada dimensão e pondera erro visual e custo de bytes igualmente
THPDFImageRecompressionCostInfo
O resultado relata contagens de imagens examinadas e elegíveis, reescritas JPEG e JPEG 2000, tentativas de codificação, rejeições visuais e de custo de bytes, totais de qualidade selecionada, erro perceptual máximo aceito, totais de bytes e o status DeterministicSelection
Segurança
Máscaras de imagem, máscaras de chave de cor, cores spot, imagens Lab e origens ICCBased não RGB permanecem inalteradas, enquanto origens RGB calibradas conversíveis retêm um espaço de cor de saída calibrado explícito
O cancelamento é verificado antes de cada imagem e tentativa de codificação, e nenhum fluxo de origem é substituído a menos que um candidato aceito completo tenha sido selecionado