THotPDF.OptimizeLoadedImagesByVisualCost Method

Przeprowadza ograniczone wyszukiwanie jakości dla kwalifikujących się wczytanych obrazów JPEG i JPEG 2000 i przyjmuje kandydata o najniższym koszcie, który spełnia jednocześnie limity jakości i oszczędności

Deklaracja

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

Model kosztu

Każdy zakodowany kandydat jest dekodowany i porównywany ze zdekodowanym źródłem przez próbkowane reszty luminancji i chrominancji na znormalizowanej skali błędu percepcyjnego od zera do 100

Kandydaci powyżej MaximumPerceptualError lub poniżej MinimumSavingsBytes są odrzucani przed scoringiem

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

Wygrywa najniższy wynik, przy remisie decyduje mniejszy rozmiar zakodowany, a potem wyższa jakość, więc powtórzone uruchomienia dają ten sam wynik

THPDFImageRecompressionCostOptions

MinimumQuality, MaximumQuality i QualityStep definiują ograniczone próby jakości, przy czym maksymalna jakość jest zawsze uwzględniana, nawet gdy krok nie dzieli zakresu

SampleStride steruje deterministycznym subsamplingiem pikseli od 1 do 64, a dwie nieujemne wagi pozwalają wywołującemu preferować wierność wizualną albo zwięzły wynik

THPDFImageRecompressionCostOptions.Default przeszukuje jakość od 30 do 90 co 10, ogranicza błąd percepcyjny do 3, wymaga co najmniej jednego zaoszczędzonego bajtu, próbuje co czwarty piksel w każdym wymiarze i waży błąd wizualny oraz koszt bajtowy po równo

THPDFImageRecompressionCostInfo

Wynik raportuje liczbę obrazów przeskanowanych i kwalifikujących się, przepisania JPEG i JPEG 2000, próby kodowania, odrzucenia wizualne i kosztowe, sumy wybranych jakości, maksymalny zaakceptowany błąd percepcyjny, sumy bajtów oraz status DeterministicSelection

Bezpieczeństwo

Maski obrazów, maski colour-key, kolory spot, obrazy Lab i źródła ICCBased poza RGB pozostają bez zmian, natomiast konwertowalne skalibrowane źródła RGB zachowują jawną, skalibrowaną przestrzeń barw wyjściowych

Anulowanie jest sprawdzane przed każdym obrazem i próbą kodowania, a żaden źródłowy stream nie zostaje zastąpiony, dopóki nie zostanie wybrany kompletny, zaakceptowany kandydat

Resource and Image Optimisation