THotPDF.DecodeLoadedImageRegionAtResolution Method
解碼來源座標矩形,同時允許解碼器選擇仍能滿足要求輸出尺寸的較低解析度層級
宣告
function DecodeLoadedImageRegionAtResolution(
AImageStream: THPDFStreamObject;
RegionLeft, RegionTop, RegionRight, RegionBottom,
TargetPixelWidth, TargetPixelHeight: Integer): TBitmap;
單元
HPDFDoc
參數
| 名稱 | 用途 |
|---|---|
AImageStream | 要解碼的已載入影像 XObject 串流 |
RegionLeft | 來源左界(含) |
RegionTop | 來源上界(含) |
RegionRight | 來源右界(不含) |
RegionBottom | 來源下界(不含) |
TargetPixelWidth | 最終渲染縮放前,有效解碼寬度的下限 |
TargetPixelHeight | 最終渲染縮放前,有效解碼高度的下限 |
傳回值
針對夾限後的非空區域傳回新配置的點陣圖;影像或要求的幾何無法解碼時傳回 nil
解析度選擇
- JPEG 2000 會選擇最大的 2 的冪次縮減,讓解碼後的寬與高都仍不低於要求的像素尺寸
- 這個選擇不會讓任何一個維度解析不足,因此能避免繪製前多餘的放大
- 原生區域選擇與解析度選擇會在小波重建與像素展開之前合併
- 崩潰隔離的 JPEG 2000 worker 會收到相同的縮減請求,並使用對應較小的輸出預算
- 當原生 fallback 處理橫跨多個 codestream tile 的區域時,各獨立 tile 會在取消、worker 數量、輸出與峰值記憶體限制內並行解碼
- 並行結果會以穩定的列主序組合;工作預算不足時會自動改走循序的區域路徑
- DeviceRGB 或 DeviceGray 的 JPEG 影像在區域或要求尺寸不同於完整影像時,會走縮小尺寸的 DCT 解碼器:以仍能涵蓋要求的縮減 DCT 尺度解碼,並把區域重新取樣到恰好要求的尺寸
- 其他支援的影像格式,以及其他色彩空間的 JPEG 影像,保持精確的區域解碼,最終縮放留給呼叫端處理
- 呼叫端擁有非 nil 的傳回點陣圖,必須自行釋放
範例
Preview := PDF.DecodeLoadedImageRegionAtResolution(
ImageStream, 0, 0, SourceWidth, SourceHeight, 320, 200);
try
Canvas.StretchDraw(TargetRect, Preview);
finally
Preview.Free;
end;