יום שישי, 31 בדצמבר 2010

C# - Image Processing

ב #C ישנם מחלקות לעיבוד תמונה וגרפיקה נוחות עם אפשריות רבות אבל כבדות לעיבוד, לכן ממולץ לשקול את השימוש במחלקות אלו ,במקרים מסויימים מומלץ להשתמש בשפות יותר נמוכות שהביצועים שלהם יותר מהירים, אבל לפעולות פשוטות ניתן להשתמש ב #C , אני ידגים מספר דוגמאות לעיבוד תמונות.

תחילה יש להכיר את מרחב השמות של המחלקות (Namespace):
System.Drawing

אותו מרחב שמות מכיל בתוכו מרחבי שמות נוספים שמכילים מחלקות אחרות, במקרה שלנו נשתמש ב 2 מרחבי שמות נוספים הקיימים במרחב שמות זה.
System.Drawing.Imaging
מרחב השמות לעיבוד תמונות
System.Drawing.Drawing2D
מרחב שמות לעבודה בדו מימד.

מרחבי שמות נוספים שלא אפרט עליהם במאמר הזה:
System.Drawing.Design
System.Drawing.Printing
System.Drawing.Text

שלב א - קריאת הקובץ לעיבוד והכנסתו לזיכרון
עכשיו נעבור על התהליך הבסיסי לעיבוד תמונה ב Net. , התהליך מכיל בתוכו מספר אובייקטים המשוייכים לאותו מרחב שמות שדיברנו לפני זה ובעצם מתחיל, דבר ראשון, מהתמונה שאנחנו רוצים לערוך כלומר המיקום הפיזי שלה על הכונן הקשיח לאחר מכן יש ליצור מהנתיב של התמונה אובייקט Image ששייך למרחב השמות System.Drawing ובעצם נטען אליו את התמונה מהנתיב שלנו.

שלב ב - מיפוי הקובץ לעיבוד והמרה ל Bitmap
השלב הבא הוא למפות את התמונה בעזרת Bitmap כלומר מטריצה של האינפורמציה הפיקסלית בתמונה.

שלב ג - עיבוד
עיבוד התמונה הוא החלק הרציני בכל התהליך, נשתמש במחלקת ה Graphics , זאת המחלקה שבפועל עושה לנו את עיבוד התמונה ע"י המפה שיצרנו לפני.

שלב ד - שמירת הקובץ המעובד
שמירת התמונה המעובדת כקובץ חדש.

הצצה לתהליך (דוגמה להמרה בין סוגי תמונה שונים):
/// Getting our image by source string
Image myimage = Image.FromFile("C:\myimage.png");

/// Getting our bitmap from the image
Bitmap mybitmap = new Bitmap(myimage);

/// Image processing by graphics class
Graphics mygraphics = Graphics.FromImage(myimage);

/// Saving our processing object
mybitmap.Save("C:\myimage1.jpg",ImageFormat.Jpeg);

קצת על הפרויקט:
הפרויקט מכיל בתוכו 2 חלקים, החלק הראשון הוא ה Gui, מורכב מכמה טפסים שיורשים טופס מרכזי עם כל ה Componets ששותפים לכל הטפסים בעזרת Object Oriented Programming.
החלק השני הוא האובייקט שעושה לנו את העבודה ואליו עוברים הנתונים מה Gui, הוא מעבד אותם ומחזיר לנו אובייקט Image מעובד לתצוגה או לשמירה.
הדוגמאות בפרויקט:
  • הקטנה \ הגדלת תמונה
  • חיתוך תמונה
  • שמירת תמונה באיכות שונה
  • סיבוב תמונה
  • שילוב 2 תמונות לתמונה
  • שקיפות התמונה
סרטון הדגמה:

הורדת הפרויקט:

בהצלחה...

אין תגובות:

הוסף רשומת תגובה