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é