THotPDF.DecodeLoadedImageRegionAtResolution Method
Decodifica un rettangolo in coordinate sorgente, lasciando al decoder la possibilità di scegliere un livello di risoluzione più basso che soddisfi comunque la dimensione di output richiesta
Dichiarazione
function DecodeLoadedImageRegionAtResolution(
AImageStream: THPDFStreamObject;
RegionLeft, RegionTop, RegionRight, RegionBottom,
TargetPixelWidth, TargetPixelHeight: Integer): TBitmap;
Unità
HPDFDoc
Parametri
| Nome | Scopo |
|---|---|
AImageStream | Stream XObject dell'immagine caricata da decodificare |
RegionLeft | Coordinata sorgente sinistra, inclusa |
RegionTop | Coordinata sorgente superiore, inclusa |
RegionRight | Coordinata sorgente destra, esclusa |
RegionBottom | Coordinata sorgente inferiore, esclusa |
TargetPixelWidth | Larghezza decodificata utile minima prima della scala di rendering finale |
TargetPixelHeight | Altezza decodificata utile minima prima della scala di rendering finale |
Valore restituito
Restituisce una bitmap appena allocata per la regione non vuota delimitata, oppure nil quando l'immagine o la geometria richiesta non possono essere decodificate
Selezione della risoluzione
- JPEG 2000 seleziona la riduzione a potenza di due più grande la cui larghezza e altezza decodificate restano entrambe almeno pari alla dimensione in pixel richiesta
- La selezione non degrada mai nessuna delle due dimensioni, evitando così un upscale inutile prima del disegno
- La selezione della regione nativa e quella della risoluzione vengono combinate prima della ricostruzione wavelet e dell'espansione dei pixel
- I worker JPEG 2000 isolati dai crash ricevono la stessa richiesta di riduzione e usano un budget di output corrispondentemente più piccolo
- Quando il fallback nativo gestisce una regione che interseca più tile del codestream, le tile indipendenti vengono decodificate in parallelo entro i limiti di cancellazione, numero di worker, output e picco di memoria
- I risultati paralleli vengono composti in un ordine stabile per righe e un budget di lavoro insufficiente seleziona in modo trasparente il percorso sequenziale sulla regione
- Un'immagine JPEG in DeviceRGB o DeviceGray passa per un decoder DCT a dimensione ridotta quando la regione o la dimensione richiesta differiscono dall'immagine completa: decodifica a una scala DCT ridotta che copre comunque la richiesta e restituisce la regione ricampionata esattamente alla dimensione richiesta
- Gli altri formati immagine supportati, e le immagini JPEG in altri spazi colore, preservano la decodifica esatta della regione e lasciano al chiamante qualsiasi scala finale
- Il chiamante è proprietario della bitmap restituita non nil e deve liberarla
Esempio
Preview := PDF.DecodeLoadedImageRegionAtResolution(
ImageStream, 0, 0, SourceWidth, SourceHeight, 320, 200);
try
Canvas.StretchDraw(TargetRect, Preview);
finally
Preview.Free;
end;