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

Otimização de Recursos e Imagens