>> [השמעת מוסיקה]
>> ROB אודן: היי.
אני רוב ואתנה לגודל של את הבעיה הזאת.
אז אנחנו הולכים להתחיל עם copy.c כמו תבנית, אבל אנחנו הולכים להיות
ביצוע כמה שינויים די.
>> עכשיו אנחנו רואים שאנחנו עושים באופן מיידי שינוי שבו אנחנו כבר לא בודקים
לrxc שלנו אינו שווה 3, אבל עכשיו אנחנו בודקים rc אינו שווה 4.
מאז אנחנו גם רוצים לכלול, ב בנוסף בקובץ ואת הקבצים
טיעונים, f שהולכת להיות זה גורם שבאמצעותו אנחנו קנה מידה.
>> אז ברגע שאנחנו בטוחים בכך, אנחנו רוצים שימוש של סריקה ו להמיר את המחרוזת
argv1 למצוף.
ואנחנו הולכים לחנות כי בגורם.
דמות נוספת זו היא לוודא כי אנחנו לא ממש נכנסים
משהו כמו 1.4 ABC בשורת הפקודה.
>> עכשיו אנחנו הולכים ליצור כמה כינויים מאז RV2 וRV3 אינם
שמות מאוד מועילים.
אנחנו, במקום זאת, הולכים לקרוא אותם בקובץ וקובץ החוצה.
עכשיו אנחנו הולכים לוודא כי הגורם שלנו היה תקף בפועל.
אז אם גורם הוא פחות או שווה ל אפס או יותר מ 100, אז כמו לכל
המפרט, שאנחנו צריכים לדחות גורם זה.
>> כאשר אנחנו בטוחים שזה טוב, עכשיו אנחנו יכולים לפתוח את קובץ n, ואנחנו צריכים לעשות
בטוח שזה נפתח בהצלחה.
אם זה לא, שיחזיר null.
אנחנו הולכים לפתוח את הקובץ החוצה.
ושוב, אנחנו רוצים לבדוק לעשות בטוח שזה נפתח בהצלחה.
ואם זה לא בהצלחה לפתוח, ולאחר מכן אנחנו גם צריכים להיות בטוחים כדי לסגור
קובץ n אשר במקור בהצלחה פתח, או אחר שיש לנו
דליפת זיכרון.
>> אז עכשיו אנחנו הולכים לקרוא במפה הסיביות כותרת קובץ ומידע מפת סיביות
כותרת מקובץ n.
אנחנו הולכים לוודא כי קובץ n היה מפת סיביות חוקית.
על אישור.
>> אז עכשיו אנחנו הולכים להתחיל לעשות כמה שינויים.
אז בגלל שאנחנו הולכים להיות שינוי דברים, אנחנו רוצים ראשון שיש לזכור
רוחב ישן של קובץ n.
אנחנו רוצים לזכור את הריפוד ישן קובץ n משתמש באותו חישוב
מcopy.c.
>> ועכשיו אנחנו הולכים לשנות כותרת מידע מפת הסיביות.
ולכן אנחנו הכפלת שני הרוחב והגובה על ידי גורם שכן
זה מה שאנחנו קנה מידה על ידי.
אנחנו הולכים לקבוע את ריפוד חדש של הקובץ על ידי
שימוש ברוחב החדש.
ואנחנו הולכים לקבוע את חדשים גודל התמונה באמצעות מספר
בתים באחת שורות שהוא הולך להיות מספר הפיקסלים באותה שורה
פעמים בגודל של פיקסל בתוספת מספר הבתים של ריפוד בסוף
מהשורה הזאת, והכפלה כל ש במספר השורות שיש לנו.
אז זה את מספר הבתים יש לנו בנתוני התמונה שלנו.
>> עכשיו Bf.Bfsize הולך להיות המספר בתים בבטאו את התדמית שלנו בתוספת
בגודל של הכותרות העליונות שלנו.
גודל אז בתוספת של כותרת קובץ מפת הסיביות וגודל של כותרת מידע מפת סיביות.
על אישור.
אז זהו זה לכותרות שלנו.
אנחנו יכולים לכתוב בראש הקובץ ו כותרת מידע משלנו
להגיש, ואנחנו טובים.
>> עכשיו זה זמן להתחיל למעשה כתיבת פיקסל
הנתונים לקובץ החוצה.
אנחנו הולכים להכריז על מאגר בגודל RGB רוחב הישן משלש, ואנחנו
הולך להכריז על משתנה בשם תחושה רציפות, וזה שאנחנו הולכים
בתחילה להגדיר שווה ל 1 שלילי.
אנחנו עוד נראה שאנחנו הולכים להיות באמצעות כי על מנת לעקוב אחר מה
שורה אנחנו כרגע טענו למאגר זה.
על אישור.
>> אז עכשיו בניגוד למהדורה הרגילה, במקום iterating מעל ב
קובץ, אנחנו הולכים לחזר על כל שורה בקובץ החוצה ולהבין
איזו שורה בקובץ שברצונך הנח בשורה זו בקובץ החוצה.
אז iterating על כל השורות באת להגיש באמצעות הגובה החדש, אנחנו הראשונים
הולך לקבוע את השורה בישנה קובץ שאנחנו הולכים להשתמש בו, שאנחנו
הולך לעשות על ידי לקיחה הנוכחית שורה מחולקת על ידי גורם.
אז זה הולך לתת לנו את השורה בקובץ הישן שאנחנו רוצים.
>> אז עכשיו אם תחושה שורה עושה y הישן לא שווה, אנחנו הולכים צריכים לקרוא את השורה
שאנחנו רוצים לחיץ שורת נוכ שלנו.
אז איך אנחנו הולכים לעשות את זה?
ראשית, אנחנו הולכים כדי להבין את עמדה שמתחילה שורה שב
קובץ מקורי.
אז העמדה שהולכת להיות האחרון כל הכותרות שלנו ו
שורות y ישנות החברה בעבר.
>> וכן כמה בתים נמצא בשורה אחת?
שוב, פעמים משולשת גודל של RGB ישן רוחב בתוספת ריפוד ישן, אז זה
מספר הבתים בשורה אחת.
ואנחנו רוצים לדלג על שורות y ישנות עבר.
אז אנחנו הולכים לf לחפש ואנחנו באמצעות מבקש להגדיר להתחיל
תחילתו של קובץ.
אנחנו הולכים f מבקשים עמדה זו בקובץ, לשים אותנו ב
תחילת השורה שאנחנו רוצים לקרוא למאגר שלנו.
>> אנחנו הולכים להגדיר שורה תחושה שווה לy הישן.
אז עכשיו אם אנחנו חוזרים לולאה ואנחנו רוצים להשתמש באותה שורה זה בקובץ משלנו,
אז אנחנו לא הולכים לקרוא אותו שוב שלא לצורך.
אז באמת, תחושה היא השורה רק אופטימיזציה.
>> לבסוף, אנחנו הולכים לקרוא לתוך שורה הנוכחית RGB הרוחב הישן משלש
שאנחנו רוצים מהקובץ המקורי.
אז עכשיו שורת נוכ מכילה פיקסלים מ את הקובץ המקורי שאנו רוצים
לכתוב לתוך הקובץ החוצה.
אז עכשיו, בדיוק כמו לעיל, במקום iterating על הקובץ הישן, אנחנו צריכים
זה כדי לחזר מעל שורות קבצים החדשים.
גם כאן, במקום iterating על כל של פיקסלים הישנים שבשורת נוכ,
אנחנו רוצים לחזר על כל פיקסלים בקובץ החדש שלנו בזה
שורה מסוימת.
>> למה אנחנו רוצים לעשות את זה?
מכיוון שאנו רואים כאן שאנחנו לא למעשה בהכרח תוך שימוש בכל
פיקסלים בקובץ המקורי.
כי אם אנחנו הולכים ומצטמצמים, אנו עלולים בעצם רוצה לדלג על פיקסלים.
ואנחנו רואים שזה -
x מחולק בגורם -
מקרוב מראה כאן שבו אנחנו אומרים y מחולק על ידי גורם להבין כי
שורת y-th הישנה תואמת שורת y-th בקובץ חדש.
>> עכשיו אנחנו הולכים לכתוב את כל פיקסלים אלה מהשורה הישנה
לשורה החדשה שלנו.
ברגע שעשינו את זה, אנחנו צריכים רק לשים את הריפוד בסוף השורה שלנו
ואחרי זה אני נכין לולאה בחזרה ולהמשיך ל את כל השורות בקובץ החדש שלנו.
בסופו של הדבר, אנחנו צריכים לסגור ישנים שלנו קובץ, סגרו את הקובץ החדש שלנו, ותמורה
אפס, כי הכל הלך בסדר.
>> השם שלי הוא רוב וזה היה הפסקה.
>> [השמעת מוסיקה]