[השמעת מוסיקה] ROB אודן: היי. אני רוב, ואקווה ש פתרון זה מסייע לשים אותך בדרך אל החלמה. אז בואו נתחיל. אנו רואים כי מייד שאנחנו רק כדי לוודא שאנחנו באמצעות לשחזר בצורה נכונה. אז השימוש פשוט צריך להיות משהו כמו לוכסן נקודה להתאושש. עכשיו אנחנו הולכים לפתוח צפויים כרטיס מנקדים קובץ גלם. אנו רואים כאן שאנו משתמשים שם קובץ תחתון גלם קבוע, שעד כאן יש לנו חשיש מוגדר ככרטיס מנקדים גלם. על אישור. אז אנחנו צריכים לוודא שזה נפתח בהצלחה, כי אם זה לא, אז אנחנו צריכים להזהיר את המשתמש. אבל בהנחה שזה לא, אנחנו עכשיו הולך להכריז על מאגר בגודל JPEG שם קובץ אורך. אז זה הולך להיות החיץ ש אנחנו הולכים sprintf ל. אז מה הוא JPEG שם קובץ אורך? עד כאן, אנחנו רואים שזה חשיש מוגדר כשמונה. אז למה שמונה? גם קובץ נתון יהיה שם משהו כמו אפס אפס אפס. JPG ואז אנחנו צריכים קו נטוי אפס. אז אנחנו צריכים חיץ שיכול לאחסן שמונה תווים. עכשיו אנחנו הולכים להיות נגד זה הולך לעקוב אחר תמונות JPEG מספר שמצאנו. ולבסוף, אנחנו הולכים יש לי קובץ JPEG שהוא בתחילה null שהולך להיות כרגע קובץ פתוח שאנחנו כותבים. עכשיו אנחנו הולכים ליש לי חיץ נוסף. זה לא אותו הדבר כמו sprintf חיץ שבו החיץ הזה הוא אחד שאנחנו קוראים בנתונים מהכרטיס מנקדים גלם. אז החיץ הולך להיות של תווים שאינם חתומים, שבו אתה יכול בעצם רק מתייחס אלינו בתים, וזה הולך להיות של גודל בלוק בגודל שבו, כפי שאנו אומרים לכם, גודל בלוק הוא 512. אז תמונות JPEG שאתה יכול לטפל בכל דבר כמו בלוקים של 512 בתים. עכשיו אנחנו הולכים ללולאה על הקובץ כולו. אנחנו הולכים f לקרוא למאגר שלנו פעמים גודל בלוק בית אחד מ הכרטיס מנקדים קובץ גלם. עכשיו מה f לקרוא לחזור? זה מחזיר את מספר הפריטים כי היא קראה בהצלחה. אז אם זה הצליח לקרוא 512 בתים, ולאחר מכן אנחנו רוצים לראות אם זה היה JPEG או לכתוב אותו לקובץ JPEG. ואם זה לא חזר 512 בתים, אז גם את הקובץ הסתיים ב אשר למקרה שנצטרך לפרוץ את y לולאה, או שיש איזו שגיאה ומקרה שביהיו גם לפרוץ את y הלולאה, אבל אנחנו רוצים לדווח משהו שהשתבש. על אישור. אז בהנחה שאנו קוראים בהצלחה ב512 בתים, אנחנו רוצים לבדוק ראשון כדי להפוך את שהבתים האלה שאנחנו פשוט לקרוא במתחיל JPEG. אז אם היא כותרת JPEG של החיץ שלנו. עכשיו מה הוא עושה כותרת JPEG? בואו נסתכל. עד כאן, אנו רואים כי פונקציה זו היא חוזר שור, ושור ש-- גם כאן, אנחנו בודקים כדי לראות אם כותרת אפס שווה מתמדת ו כותרת אחד שווה מתמדת ו כותרת שתיים שווה מתמדת, כותרת שלוש שווה את זה או את זה קבוע שבו כולם קבועים אלה הם רק חשיש שהוגדר כאן והם בדיוק מה שאמרנו לכם במפרט שJPEG מתחיל עם. ולכן פונקציה זו היא רק הולכת החזר אמיתי אם חיץ זה מייצג תחילת JPEG חדש ושקר אחר. על אישור. אז אם זה עושה מייצג JPEG חדש, אז אנחנו קודם כל רוצים לבדוק אם קובץ JPEG הוא לא שווה ל null, ובמקרה כזה אנחנו סוגרים אותו. וכל כך למה אנחנו צריכים לבדוק כדי לראות אם זה לא null? ובכן JPEG הראשון שאנחנו למצוא לא כבר יש לנו קובץ JPEG פתוח. וכך, אם אנחנו מנסים לסגור את זה, אז אנחנו לא עושים משהו ממש נכון. אבל בכל JPEG שלאחר מכן כי אנחנו פותחים, אנחנו רוצים לסגור הקובץ הקודם. אז עכשיו אנחנו הולכים להשתמש sprintf כפי שאנו אמר בעבר שבו אנו משתמשים שם קובץ החיץ JPEG. ואנחנו הולכים להשתמש בקובץ JPEG תבנית שם כתבנית שלנו. ומה זה? עד כאן, אנחנו רואים שזה אחוז אפס 3D.JPEG בי אפס שלושה רק אומר שאנחנו משתמשים בשלושה מספרים שלמים לכך מרופד באפסים. אז ככה נקבל אפס אפס one.JPEG ואפס 10.JPEG וכן הלאה. אנחנו הולכים להשתמש sprintf. והמספר השלם שאנחנו מכניסים לתוך המחרוזת היא בפורמט JPEG הקהה התאושש, שהוא במקור אפס. אז את הקובץ הראשון נפתח הולך להיות אפס אפס אפס הנקודה JPEG. ואז אנחנו להגדיל כל זה כל כך הקובץ הבא אנו פותחים יהיה אפס אפס נקודת JPEG אחת ואנו להגדיל אותו שוב כך זה יהיה אפס אפס שתי נקודות JPEG וכן הלאה. בסדר. אז עכשיו את החלק הפנימי של קובץ JPEG שם, יש לנו את שמו של קובץ שאנחנו רוצים. אנו f יכולים לפתוח את הקובץ לכתיבה. על אישור. ושוב, אנחנו צריכים לבדוק לעשות בטוח שהקובץ בהצלחה פתח שכן אם זה לא, אז הייתה איזו שגיאה. אז עכשיו אנחנו כבר קיבלנו בעבר זה חלק JPEG. והנה, אנחנו רואים שאנחנו הולכים לכתוב לJPEG. אבל יש לנו ראשון סימון זו שאומר אם קובץ JPEG לא null שווה. למה אנחנו צריכים את זה? גם קובץ JPEG שווה null כאשר אנו כרגע יש JPEG פתוח. מה אם מתחיל גלם נקודת כרטיס בחבורה של בתים ש אינו מייצג את JPEG? ואז אנחנו הולכים לרוצים לדלג מעל בתים אלו. כאילו אין לנו לבדוק את זה, אז אנחנו הולך לכתוב שללא נפתח להגיש 512 הבתים הראשונים של כרטיס וזה לא טוב. על אישור. אז בהנחה שיש לנו קובץ פתוח, ולאחר מכן אנחנו הולכים לכתוב לקובץ זה 512 בתים שיש לנו במאגר שלנו. ואנחנו בודקים שוב לעשות בטוח ש512 הבתים בהצלחה נכתב, כי אם הם לא היו נכתב בהצלחה, אז משהו השתבש. אנחנו נסגור את הקבצים שלנו, להדפיס כי משהו השתבש, ולחזור. הכל בהנחה שהולך בצורה נכונה, ולאחר מכן אנחנו נשמור לולאת סגירה קובץ ישן, פתיחת הקובץ החדש, כתיבה הנתונים לקובץ החדש, וכך על עד שלבסוף, f זה לקרוא מחזיר אפס שפירושו שהקובץ נעשה. אז עכשיו שקריאת הכרטיס נגמרה, אנחנו רואה שאנחנו הולכים לסגור את f הקובץ האחרון שהיינו לנו פתוח, אבל אנחנו בודקים אם קובץ JPEG עושה null לא שווה. ובכן קרוב ו הגיוני כי כמו אנחנו פותחים קבצים, אנחנו סוגרים הקובץ הקודם, אבל האחרון קובץ שפתחנו לא מקבל סגור. אז זה מה שזה עושה. אבל למה אנחנו צריכים לבדוק null? אז מה אם גלם נקודת כרטיס לא יש לי JPEG בודד בתוכו? במקרה זה, היינו צריך מעולם לא פתח את קובץ. ואם אנחנו אף פעם לא לפתוח קובץ, אנחנו צריכים לא אנסה לסגור את הקובץ. אז זה מה שסימון זו עושה. עכשיו הוא כאן, כמו שאמרתי קודם, שאנחנו יכולים פרץ כי y לולאה גם אם הכרטיס הסתיים או אם יש איזו שגיאה בקריאה מהכרטיס. אז זו בדיקה כדי לראות אם יש שגיאה בקריאה מהכרטיס, ב ומקרה זה, אנו אומרים שיש היה שגיאה בקריאה. אנחנו לא רוצים שהמשתמש חושב הכל הלך בהצלחה. ונחזור אחד לטעויות. לבסוף, אנחנו f סוגרים את קובץ הגלם שלנו, הכרטיס שלנו מנקדים גלם, כדי לציין כי הכל הלך טוב ותמורה אפס וזהו זה. השם שלי הוא רוב וזה היה לשחזר. [השמעת מוסיקה]