Método THotPDF.OptimizeLoadedImagesByVisualCost
Ejecuta una búsqueda de calidad acotada sobre las imágenes JPEG y JPEG 2000 cargadas elegibles y adopta el candidato de menor costo que cumple a la vez los límites de calidad y de ahorro
Declaración
function OptimizeLoadedImagesByVisualCost(
const Options: THPDFImageRecompressionCostOptions;
out AInfo: THPDFImageRecompressionCostInfo): Integer;
Modelo de costo
Cada candidato codificado se decodifica y se compara con la fuente decodificada mediante residuos muestreados de luma y croma sobre una escala de error perceptual normalizada de 0 a 100
Los candidatos por encima de MaximumPerceptualError o por debajo de MinimumSavingsBytes se descartan antes de la puntuación
score = VisualErrorWeight * sqr(error / MaximumPerceptualError)
+ ByteCostWeight * (candidateBytes / sourceBytes)
Gana el puntaje más bajo; ante empates se prefiere el tamaño codificado menor y luego la calidad más alta, de modo que ejecuciones repetidas producen la misma salida
THPDFImageRecompressionCostOptions
MinimumQuality, MaximumQuality y QualityStep definen las pruebas de calidad acotadas, y la calidad máxima siempre se incluye aunque el paso no divida el rango
SampleStride controla el submuestreo determinista de píxeles de 1 a 64, mientras que los dos pesos no negativos permiten priorizar la fidelidad visual o una salida compacta
THPDFImageRecompressionCostOptions.Default explora calidades de 30 a 90 en pasos de 10, limita el error perceptual a 3, exige al menos un byte ahorrado, muestrea cada cuarto píxel en cada dimensión y pondera por igual el error visual y el costo en bytes
THPDFImageRecompressionCostInfo
El resultado reporta los conteos de imágenes escaneadas y elegibles, las reescrituras JPEG y JPEG 2000, las pruebas de codificación, los rechazos por error visual y por costo en bytes, los totales de calidad seleccionada, el error perceptual máximo aceptado, los totales de bytes y el estado de DeterministicSelection
Seguridad
Las máscaras de imagen, las máscaras colour-key, los colores spot, las imágenes Lab y las fuentes ICCBased no RGB se mantienen sin cambios, mientras que las fuentes RGB calibradas convertibles conservan un espacio de color de salida calibrado explícito
La cancelación se comprueba antes de cada imagen y de cada prueba de codificación, y no se reemplaza ningún stream de origen salvo que se haya seleccionado un candidato aceptado completo