המתודה THotPDF.DecodeLoadedImageRegionAtResolution
מפענח מלבן בקואורדינטות מקור תוך מתן אפשרות למפענח לבחור רמת רזולוציה נמוכה יותר שעדיין מספקת את גודל הפלט המבוקש
הצהרה
function DecodeLoadedImageRegionAtResolution(
AImageStream: THPDFStreamObject;
RegionLeft, RegionTop, RegionRight, RegionBottom,
TargetPixelWidth, TargetPixelHeight: Integer): TBitmap;
יחידה
HPDFDoc
פרמטרים
| שם | מטרה |
|---|---|
AImageStream | זרם XObject של תמונה טעונה לפענוח |
RegionLeft | קואורדינטת מקור שמאלית כוללנית |
RegionTop | קואורדינטת מקור עליונה כוללנית |
RegionRight | קואורדינטת מקור ימנית לא-כוללנית |
RegionBottom | קואורדינטת מקור תחתונה לא-כוללנית |
TargetPixelWidth | רוחב מפוענח שימושי מינימלי לפני קנה מידה סופי של רנדור |
TargetPixelHeight | גובה מפוענח שימושי מינימלי לפני קנה מידה סופי של רנדור |
ערך החזרה
מחזיר ביטאמפ שהוקצה חדש עבור האזור הלא-ריק המוגבל, או nil כאשר לא ניתן לפענח את התמונה או הגיאומטריה המבוקשת
בחירת רזולוציה
- JPEG 2000 בוחר את ההקטנה בחזקת שתיים הגדולה ביותר שרוחב וגובה מפוענחים שלה שניהם נשארים לפחות בגודל הפיקסל המבוקש
- הבחירה אף פעם לא מבצעת רזולוציה-חסרה לאמילה של מאן-הממדים ולכן נמנעת מהגדלה מיותרת לפני הציור
- בחירת אזור מקורי ובחירת רזולוציה משולבות לפני שחזור wavelet והרחבת פיקסל
- עובדי JPEG 2000 המבודדים מפני קריסה מקבלים את אותה בקשת הקטנה ומשתמשים בתקציב פלט קטן יותר בהתאם
- כאשר נסיגה מקורית מטפלת באזור החותך אריחי codestream מרובים, אריחים בלתי-תלויים מפוענחים במקביל בתוך מגבלות ביטול, מספר עובדים, פלט וזיכרון שיא
- תוצאות מקבילות מורכבות בסדר שורות יציב ותקציב עבודה לא מספק בוחר בשקיפות את נתיב האזור הסדרתי
- תמונת JPEG ב-DeviceRGB או ב-DeviceGray עוברת מפענח DCT בגודל מוקטן כשהאזור או הגודל המבוקש שונים מהתמונה המלאה: היא מפענחת בקנה מידה DCT מוקטן שעדיין מכסה את הבקשה ומחזירה את האזור דגום מחדש בדיוק לגודל המבוקש
- פורמטי תמונות נתמכים אחרים, ותמונות JPEG במרחבי צבע אחרים, שומרים על פענוח אזור מדויק ומשאירים כל קנה מידה סופי לקורא
- הקורא הבעלים של ביטאמפ מוחזר לא ריק וחייב לשחרר אותו
דוגמה
Preview := PDF.DecodeLoadedImageRegionAtResolution(
ImageStream, 0, 0, SourceWidth, SourceHeight, 320, 200);
try
Canvas.StretchDraw(TargetRect, Preview);
finally
Preview.Free;
end;