THotPDF.OptimizeLoadedImagesByVisualCost Method
Esegue una ricerca di qualità limitata sulle immagini JPEG e JPEG 2000 caricate idonee e adotta il candidato di costo minimo che soddisfa sia i limiti di qualità sia quelli di risparmio
Dichiarazione
function OptimizeLoadedImagesByVisualCost(
const Options: THPDFImageRecompressionCostOptions;
out AInfo: THPDFImageRecompressionCostInfo): Integer;
Modello di costo
Ogni candidato codificato viene decodificato e confrontato con la sorgente decodificata tramite residui campionati di luma e chroma su una scala normalizzata di errore percettivo da zero a 100
I candidati oltre MaximumPerceptualError o sotto MinimumSavingsBytes vengono rifiutati prima dello scoring
score = VisualErrorWeight * sqr(error / MaximumPerceptualError)
+ ByteCostWeight * (candidateBytes / sourceBytes)
Vince il punteggio più basso, seguito dalla dimensione codificata minore e poi dalla qualità più alta in caso di parità, così esecuzioni ripetute producono lo stesso output
THPDFImageRecompressionCostOptions
MinimumQuality, MaximumQuality e QualityStep definiscono le prove di qualità limitate, e la qualità massima è sempre inclusa anche quando lo step non divide l'intervallo
SampleStride controlla il sottocampionamento deterministico dei pixel da 1 a 64, mentre i due pesi non negativi lasciano al chiamante la scelta tra fedeltà visiva e output compatto
THPDFImageRecompressionCostOptions.Default cerca la qualità da 30 a 90 con step di 10, limita l'errore percettivo a 3, richiede un byte risparmiato, campiona un pixel su quattro in ogni dimensione e pesa allo stesso modo errore visivo e costo in byte
THPDFImageRecompressionCostInfo
Il risultato riporta il numero di immagini scansionate e idonee, le riscritture JPEG e JPEG 2000, le prove di codifica, i rifiuti per errore visivo e costo in byte, i totali delle qualità selezionate, l'errore percettivo massimo accettato, i totali in byte e lo stato DeterministicSelection
Sicurezza
Le maschere immagine, le maschere colour-key, i colori spot, le immagini Lab e le sorgenti ICCBased non RGB restano invariate, mentre le sorgenti RGB calibrate convertibili conservano uno spazio colore di output calibrato esplicito
La cancellazione viene verificata prima di ogni immagine e prova di codifica, e nessuno stream sorgente viene sostituito se non è stato selezionato un candidato accettato completo