THotPDF.DecodeLoadedImageRegionAtResolution Method
یک مستطیل در مختصات مبدأ را decode میکند و به decoder اجازه میدهد سطح رزولوشن پایینتری را انتخاب کند که همچنان اندازهٔ خروجی درخواستی را برآورده کند
اعلان
function DecodeLoadedImageRegionAtResolution(
AImageStream: THPDFStreamObject;
RegionLeft, RegionTop, RegionRight, RegionBottom,
TargetPixelWidth, TargetPixelHeight: Integer): TBitmap;
واحد
HPDFDoc
پارامترها
| نام | هدف |
|---|---|
AImageStream | Loaded image XObject stream to decode |
RegionLeft | Inclusive left source coordinate |
RegionTop | Inclusive top source coordinate |
RegionRight | Exclusive right source coordinate |
RegionBottom | Exclusive bottom source coordinate |
TargetPixelWidth | Minimum useful decoded width before final rendering scale |
TargetPixelHeight | Minimum useful decoded height before final rendering scale |
مقدار بازگشتی
برای ناحیهٔ clampشدهٔ غیرخالی یک بیتمپ تازهتخصیصیافته برمیگرداند، یا وقتی تصویر یا هندسهٔ درخواستی قابل decode نباشد nil
Resolution selection
- JPEG 2000 بزرگترین کاهش توان-دو را انتخاب میکند که عرض و ارتفاع decodeشده هر دو دستکم برابر اندازهٔ پیکسل درخواستی بمانند
- این انتخاب هیچکدام از دو بُعد را زیر رزولوشن لازم نمیبرد و بنابراین از upscale غیرضروری پیش از رسم جلوگیری میکند
- انتخاب ناحیهٔ بومی و انتخاب رزولوشن پیش از بازسازی wavelet و گسترش پیکسل با هم ترکیب میشوند
- workerهای JPEG 2000 ایزولهشده در برابر crash همان درخواست کاهش را میگیرند و از بودجهٔ خروجی متناسباً کوچکتری استفاده میکنند
- وقتی native fallback ناحیهای را مدیریت میکند که با چند tile از codestream برخورد دارد، tileهای مستقل بهطور همزمان و در چارچوب حدهای لغو، تعداد worker، خروجی و حافظهٔ اوج decode میشوند
- نتایج موازی به ترتیب پایدار row-major ترکیب میشوند و کمبود بودجهٔ کاری بهطور شفاف مسیر ناحیهٔ ترتیبی (sequential) را انتخاب میکند
- تصویر JPEG در DeviceRGB یا DeviceGray وقتی ناحیه یا اندازهٔ درخواستی با تصویر کامل متفاوت است از decoder کاهشاندازهٔ DCT عبور میکند: در مقیاس DCT کاهشیافتهای کدگشایی میکند که همچنان درخواست را پوشش میدهد و ناحیه را دقیقاً به اندازهٔ درخواستی resample شده برمیگرداند
- سایر فرمتهای تصویر پشتیبانیشده، و تصاویر JPEG در فضاهای رنگی دیگر، decode دقیق ناحیه را حفظ میکنند و scaling نهایی را به فراخواننده وامیگذارند
- فراخواننده مالک بیتمپ غیر nil برگشتی است و باید آن را آزاد کند
مثال
Preview := PDF.DecodeLoadedImageRegionAtResolution(
ImageStream, 0, 0, SourceWidth, SourceHeight, 320, 200);
try
Canvas.StretchDraw(TargetRect, Preview);
finally
Preview.Free;
end;