THotPDF.OptimizeLoadedImagesByVisualCost Method

Exécute une recherche de qualité bornée pour les images JPEG et JPEG 2000 chargées éligibles et adopte le candidat au coût le plus faible satisfaisant à la fois les limites de qualité et d’économie

Déclaration

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

Modèle de coût

Chaque candidat encodé est décodé et comparé à la source décodée via des résidus échantillonnés de luma et de chroma sur une échelle d’erreur perceptuelle normalisée de zéro à 100

Les candidats au-dessus de MaximumPerceptualError ou en dessous de MinimumSavingsBytes sont rejetés avant la notation

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

Le score le plus faible gagne, suivi de la taille encodée plus petite puis de la qualité plus élevée en cas d’égalité, si bien que des exécutions répétées produisent la même sortie

THPDFImageRecompressionCostOptions

MinimumQuality, MaximumQuality et QualityStep définissent les essais de qualité bornés, et la qualité maximale est toujours incluse même si le pas ne divise pas la plage

SampleStride contrôle le sous-échantillonnage déterministe des pixels de 1 à 64, tandis que les deux poids non négatifs laissent l’appelant favoriser la fidélité visuelle ou la compacité de la sortie

THPDFImageRecompressionCostOptions.Default recherche les qualités 30 à 90 par pas de 10, limite l’erreur perceptuelle à 3, exige un octet économisé, échantillonne un pixel sur quatre dans chaque dimension et pondère également erreur visuelle et coût en octets

THPDFImageRecompressionCostInfo

Le résultat rapporte les nombres d’images scannées et éligibles, les réécritures JPEG et JPEG 2000, les essais d’encodage, les rejets pour erreur visuelle et coût en octets, les totaux de qualités sélectionnées, l’erreur perceptuelle maximale acceptée, les totaux d’octets et l’état DeterministicSelection

Sécurité

Les masques d’image, masques à clé de couleur, couleurs spot, images Lab et sources ICCBased non RGB restent inchangés, tandis que les sources RGB calibrées convertibles conservent un espace colorimétrique de sortie calibré explicite

L’annulation est vérifiée avant chaque image et chaque essai d’encodage, et aucun stream source n’est remplacé tant qu’un candidat accepté complet n’a pas été sélectionné

Optimisation des ressources et des images