THotPDF.DecodeLoadedImageRegionAtResolution-Methode
Dekodiert ein Quellkoordinaten-Rechteck und lässt den Dekodierer dabei ein niedrigeres Auflösungslevel wählen, das die angeforderte Ausgabegröße dennoch erfüllt
Deklaration
function DecodeLoadedImageRegionAtResolution(
AImageStream: THPDFStreamObject;
RegionLeft, RegionTop, RegionRight, RegionBottom,
TargetPixelWidth, TargetPixelHeight: Integer): TBitmap;
Einheit
HPDFDoc
Parameter
| Name | Zweck |
|---|---|
AImageStream | Zu dekodierender Bild-XObject-Stream eines geladenen Bildes |
RegionLeft | Einschließende linke Quellkoordinate |
RegionTop | Einschließende obere Quellkoordinate |
RegionRight | Ausschließende rechte Quellkoordinate |
RegionBottom | Ausschließende untere Quellkoordinate |
TargetPixelWidth | Minimale nützliche dekodierte Breite vor dem finalen Rendering-Skalierungsfaktor |
TargetPixelHeight | Minimale nützliche dekodierte Höhe vor dem finalen Rendering-Skalierungsfaktor |
Rückgabewert
Liefert eine neu allokierte Bitmap für die festgeklemmte, nicht leere Region oder nil, wenn das Bild oder die angeforderte Geometrie nicht dekodiert werden kann
Auflösungsauswahl
- JPEG 2000 wählt die größte Zweierpotenz-Reduktion, deren dekodierte Breite und Höhe beide mindestens der angeforderten Pixelgröße entsprechen
- Die Auswahl unterschätzt nie eine der beiden Dimensionen und vermeidet daher unnötiges Hochskalieren vor dem Zeichnen
- Native Regionenauswahl und Auflösungsauswahl werden vor der Wavelet-Rekonstruktion und Pixel-Expansion kombiniert
- Absturzisolierte JPEG-2000-Worker erhalten dieselbe Reduktionsanforderung und nutzen ein entsprechend kleineres Ausgabebudget
- Wenn der native Fallback eine Region verarbeitet, die mehrere Codestream-Tiles schneidet, dekodieren unabhängige Tiles nebenläufig innerhalb der Limits für Abbruch, Worker-Anzahl, Ausgabe und Peak-Memory
- Parallele Ergebnisse werden in stabiler Row-Major-Reihenfolge zusammengeführt, und ein unzureichendes Arbeitsbudget wählt transparent den sequenziellen Regionspfad
- Ein JPEG-Bild in DeviceRGB oder DeviceGray läuft über einen DCT-Dekoder mit reduzierter Größe, wenn die Region oder die angeforderte Größe vom vollständigen Bild abweicht: Er dekodiert mit einer reduzierten DCT-Skala, die die Anforderung noch abdeckt, und liefert die Region exakt auf die angeforderte Größe skaliert zurück
- Andere unterstützte Bildformate und JPEG-Bilder in anderen Farbräumen bewahren die exakte Regionendekodierung und überlassen jedes finale Skalieren dem Aufrufer
- Der Aufrufer besitzt eine nicht-nil zurückgegebene Bitmap und muss sie freigeben
Beispiel
Preview := PDF.DecodeLoadedImageRegionAtResolution(
ImageStream, 0, 0, SourceWidth, SourceHeight, 320, 200);
try
Canvas.StretchDraw(TargetRect, Preview);
finally
Preview.Free;
end;