ליבה API

ליבה API

Aspose.Imaging FOSS עבור כל השטח הציבורי של .NET הוא שלוש מחלקות: ImageProbe (המחזית הסטטית), ImageInfo (ערך התוצאה), ו ImageFormat (ה-enum של הפורמט). עמוד זה מכסה כיצד הם מתאימים יחד כחוזה, מעבר לסיור לפי תכונה ב תכונות ופונקציונליות.


החוזה בעל שלוש המחלקות

  • ImageProbe — סטטי, חסר מצב. כל קריאה היא עצמאית; אין דבר להגדרה או להסרה.
  • ImageInfo — סגור, בלתי ניתן לשינוי. כל חמשת המאפיינים (Format, Width, Height, BitDepth, FrameCount) הם קריאה בלבד לאחר הבנייה.
  • ImageFormat — enum עם ערך אחד לכל פורמט מוכר, ועוד Unknown.
using Aspose.Imaging.Foss;

var info = ImageProbe.ProbeFile("photo.jpg");
ImageFormat format = info.Format;   // always set
int? width = info.Width;            // set only when the format's header carries it

בניית ImageInfo ישירות

הקונסטרוקטור של ImageInfo ציבורי — נדרש רק format, וכל פרמטר אחר מקבל ערך ברירת מחדל של null. זה מועיל לבדיקות יחידה שצריכות תוצאה מחליפה מבלי לחקור קובץ אמיתי:

using Aspose.Imaging.Foss;

// Fake a PNG result for a test double, with no dimensions
var fakeInfo = new ImageInfo(ImageFormat.Png);

// Fake a fully-populated result
var fullInfo = new ImageInfo(ImageFormat.Gif, width: 64, height: 48, bitDepth: 8, frameCount: 3);

אין דרך מתאימה ל mutate an ImageInfo לאחר בנייה — כל מאפיין הוא קריאה בלבד, ולכן מופע שנבדק או נבנה הוא בטוח להעברה ולשמירה במטמון ללא צורך בהעתקה מגנה.


בחירת העומס הנכון

Overloadהשתמש כאשר
ImageProbe.ProbeFile(path)יש לך נתיב קובץ ואתה רוצה את ה-ImageInfo המלא
ImageProbe.Probe(stream)כבר יש לך Stream פתוח (ניתן לחיפוש או לא) ואתה רוצה את ה-ImageInfo המלא
ImageProbe.Probe(data)כבר יש לך את הבייטים בזיכרון ואתה רוצה את ה-ImageInfo המלא
ImageProbe.DetectFormat(stream) / (data)אתה רק צריך לבצע סניף על ImageFormat — לדלג על ניתוח הכותרת מעבר לחותמת הפורמט

ProbeFile פותח וקורא את הקובץ בעצמו — אין צורך לפתוח FileStream קודם רק כדי לקרוא ל-Probe(stream).


סריקה קבוצתית של תיקייה

מאחר ש-ImageProbe לעולם לא זורק חריגה, סריקת תיקייה יכולה לקרוא לו בלולאה צפופה ללא try/catch לכל קובץ:

using Aspose.Imaging.Foss;

foreach (var path in Directory.GetFiles("incoming"))
{
    var info = ImageProbe.ProbeFile(path);

    if (info.Format == ImageFormat.Unknown)
    {
        Console.WriteLine($"{path}: not a recognized image format, skipping");
        continue;
    }

    Console.WriteLine($"{path}: {info.Format} {info.Width}x{info.Height}");
}

כל קובץ שהכותרת שלו אינה תואמת לאחד מ-11 הפורמטים המוכרים יוחלף ב-ImageFormat.Unknown במקום לזרוק חריגה — הלולאה שלמעלה לעולם אינה זקוקה לחסימת catch.


החוזה של “לעולם לא זורק”

זה לא התנהגות מקרית — זה חלק מכוון של חוזה API. אם כותרת של פורמט מוכר נחתכת או פגומה בחלק מהפרסינג, ImageProbe עדיין מחזירה ImageInfo עם Format מוגדר לפורמט שהיא זיהתה; היא לא מעבירה חריגת ניתוח למזמין. רק Format מובטחת — יש להתייחס לכל שאר המאפיינים כאופציונליים ללא קשר לאיזה פורמט זוהה.


בעיות נפוצות

בעיהסיבהתיקון
ה-ImageInfo שנוצר אינו תואם תוצאה אמיתית של מדדמופעים שנבנו ידנית אינם מאמתים עקביות בין השדותהשתמשו בבנייה ידנית רק עבור תחליפי מבחן, ולא כתחליף לבדיקת קבצים אמיתיים
קריאה ל-Probe כאשר DetectFormat היה מספיקפענוח כותרת מיותר כאשר רק הפורמט נדרשהשתמש ב-DetectFormat אם לעולם לא קוראים Width/Height/BitDepth/FrameCount
פורמט Unknown עבור קובץ שאתה מצפה שהוא נתמךהכותרת אינה תואמת לאף אחת מ-11 החתימות המזוהות, או שהקובץ הוא פורמט שונה לחלוטיןאמת את הקובץ מול ה רשימת הפורמטים הנתמכים

FAQ

האם ניתן ליצור מחלקה נגזרת מ-ImageInfo או מ-ImageProbe?

לא. ImageInfo הוא sealed ו-ImageProbe הוא static — אף אחד מהם אינו מיועד לירושה או ליצירת מופע באמצעות ירושה.

האם ImageProbe בטוח בתהליכים מרובים?

ImageProbe לא מחזיק במצב ניתן לשינוי בין קריאות — כל קריאה ל-Probe, ProbeFile או DetectFormat היא בלתי תלויה, מה שהופך קריאות מקבילות ממספר ת׳רדים לבטוחות.

האם אני צריך לשחרר משהו?

לא. ImageProbe אין לו משאבי IDisposable משלו. אם אתה מעביר Stream שפתחת בעצמך, אתה נשאר אחראי לפינוי הזרם — Probe(stream) אינו סוגר אותו.


API Reference סיכום

מחלקה / מתודהתיאור
ImageProbe.ProbeFile(path)בדוק קובץ לפי נתיב
ImageProbe.Probe(stream)בדוק Stream
ImageProbe.Probe(data)בדוק byte[]
ImageProbe.DetectFormat(stream)פורמט בלבד, מ-Stream
ImageProbe.DetectFormat(data)פורמט בלבד, מ-byte[]
ImageInfo(format, width, height, bitDepth, frameCount)בונה ציבורי — רק format נדרש
ImageInfo.Format / .Width / .Height / .BitDepth / .FrameCountמאפייני תוצאה לקריאה בלבד
ImageFormatEnum: Unknown, Png, Jpeg, Gif, Bmp, WebP, Ico, Tiff, Psd, Emf, Wmf, Dicom

ראה גם

 עברית