THotPDF.DecodeLoadedImageRegionAtResolution Method
Dekóduje obdélník ve zdrojových souřadnicích a dovolí decoderu zvolit nižší úroveň rozlišení, která pořád pokryje požadovanou výstupní velikost
Deklarace
function DecodeLoadedImageRegionAtResolution(
AImageStream: THPDFStreamObject;
RegionLeft, RegionTop, RegionRight, RegionBottom,
TargetPixelWidth, TargetPixelHeight: Integer): TBitmap;
Jednotka
HPDFDoc
Parametry
| Název | Účel |
|---|---|
AImageStream | Stream načteného image XObjectu k dekódování |
RegionLeft | Levá zdrojová souřadnice včetně |
RegionTop | Horní zdrojová souřadnice včetně |
RegionRight | Pravá zdrojová souřadnice nevčetně |
RegionBottom | Dolní zdrojová souřadnice nevčetně |
TargetPixelWidth | Minimální užitečná dekódovaná šířka před finálním škálováním při renderování |
TargetPixelHeight | Minimální užitečná dekódovaná výška před finálním škálováním při renderování |
Návratová hodnota
Vrací nově alokovanou bitmapu pro oříznutou neprázdnou oblast, nebo nil, když obrázek nebo požadovanou geometrii nelze dekódovat
Výběr rozlišení
- JPEG 2000 zvolí největší redukci o mocninu dvou, u které dekódovaná šířka i výška zůstávají alespoň na požadované velikosti v pixelech
- Výběr nikdy nerozliší ani jeden rozměr pod hodnotu požadavku, takže před vykreslením odpadá zbytečný upscale
- Výběr nativní oblasti a výběr rozlišení se kombinují před wavelet rekonstrukcí a rozšířením na pixely
- JPEG 2000 workery izolované proti pádu dostanou stejný požadavek na redukci a použijí odpovídající menší výstupní budget
- Když nativní fallback zpracovává oblast zasahující do více codestream tile, nezávislé tile se dekódují souběžně v rámci limitů cancellation, počtu workerů, výstupu a špičkové paměti
- Paralelní výsledky se skládají ve stabilním pořadí po řádcích a nedostatečný pracovní budget transparentně přepne na sekvenční cestu přes oblast
- Obraz JPEG v DeviceRGB nebo DeviceGray projde DCT dekodérem zmenšené velikosti, když se oblast nebo požadovaná velikost liší od celého obrazu: dekóduje ve zmenšeném DCT měřítku, které požadavek stále pokrývá, a vrátí oblast převzorkovanou přesně na požadovanou velikost
- Ostatní podporované formáty obrázků a obrazy JPEG v jiných barevných prostorech zachovávají přesné dekódování oblasti a finální škálování nechávají na volajícím
- Nenulovou vrácenou bitmapu vlastní volající a musí ji uvolnit
Příklad
Preview := PDF.DecodeLoadedImageRegionAtResolution(
ImageStream, 0, 0, SourceWidth, SourceHeight, 320, 200);
try
Canvas.StretchDraw(TargetRect, Preview);
finally
Preview.Free;
end;