THotPDF.OptimizeLoadedImagesByVisualCost-Methode

Führt eine begrenzte Qualitätssuche für geeignete geladene JPEG- und JPEG-2000-Bilder durch und übernimmt den Kandidaten mit den geringsten Kosten, der sowohl Qualitäts- als auch Einsparvorgaben erfüllt

Deklaration

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

Kostenmodell

Jeder kodierte Kandidat wird dekodiert und über stichprobenartige Luma- und Chroma-Residuen auf einer normierten Wahrnehmungsskala von 0 bis 100 mit der dekodierten Quelle verglichen

Kandidaten oberhalb von MaximumPerceptualError oder unterhalb von MinimumSavingsBytes werden vor der Bewertung verworfen

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

Der niedrigste Score gewinnt; bei Gleichstand folgen kleinere kodierte Größe und dann höhere Qualität, sodass wiederholte Läufe dasselbe Ergebnis liefern

THPDFImageRecompressionCostOptions

MinimumQuality, MaximumQuality und QualityStep definieren die begrenzten Qualitätstests; die maximale Qualität wird immer einbezogen, selbst wenn der Schritt den Bereich nicht teilt

SampleStride steuert deterministisches Pixel-Subsampling von 1 bis 64, während die beiden nicht-negativen Gewichte dem Aufrufer erlauben, visuelle Treue oder kompakte Ausgabe zu bevorzugen

THPDFImageRecompressionCostOptions.Default durchsucht die Qualität 30 bis 90 in Zehnerschritten, begrenzt den Wahrnehmungsfehler auf 3, verlangt ein gespartes Byte, samplet jedes vierte Pixel in jeder Dimension und gewichtet visuellen Fehler und Bytekosten gleich

THPDFImageRecompressionCostInfo

Das Ergebnis meldet gescannte und geeignete Bildanzahlen, JPEG- und JPEG-2000-Rewrites, Kodierungstests, visuelle und Bytekosten-Verwürfe, gewählte Qualitätssummen, den maximal akzeptierten Wahrnehmungsfehler, Bytetotalen und den DeterministicSelection-Status

Sicherheit

Image-Masks, Colour-Key-Masks, Spot-Farben, Lab-Bilder und nicht-RGB-ICCBased-Quellen bleiben unverändert, während konvertierbare kalibrierte RGB-Quellen einen expliziten kalibrierten Ausgabefarbraum behalten

Abbruch wird vor jedem Bild und jedem Kodierungstest geprüft, und kein Quellstream wird ersetzt, solange kein vollständiger akzeptierter Kandidat gewählt wurde

Ressourcen- und Bildoptimierung