1 00:00:00,000 --> 00:00:00,996 2 00:00:00,996 --> 00:00:12,470 >> [השמעת מוסיקה] 3 00:00:12,470 --> 00:00:13,210 >> ROB אודן: היי. 4 00:00:13,210 --> 00:00:16,870 אני רוב ואתנה לגודל של את הבעיה הזאת. 5 00:00:16,870 --> 00:00:20,990 אז אנחנו הולכים להתחיל עם copy.c כמו תבנית, אבל אנחנו הולכים להיות 6 00:00:20,990 --> 00:00:23,340 ביצוע כמה שינויים די. 7 00:00:23,340 --> 00:00:27,570 >> עכשיו אנחנו רואים שאנחנו עושים באופן מיידי שינוי שבו אנחנו כבר לא בודקים 8 00:00:27,570 --> 00:00:31,560 לrxc שלנו אינו שווה 3, אבל עכשיו אנחנו בודקים rc אינו שווה 4. 9 00:00:31,560 --> 00:00:34,670 מאז אנחנו גם רוצים לכלול, ב בנוסף בקובץ ואת הקבצים 10 00:00:34,670 --> 00:00:39,550 טיעונים, f שהולכת להיות זה גורם שבאמצעותו אנחנו קנה מידה. 11 00:00:39,550 --> 00:00:45,430 >> אז ברגע שאנחנו בטוחים בכך, אנחנו רוצים שימוש של סריקה ו להמיר את המחרוזת 12 00:00:45,430 --> 00:00:49,030 argv1 למצוף. 13 00:00:49,030 --> 00:00:51,330 ואנחנו הולכים לחנות כי בגורם. 14 00:00:51,330 --> 00:00:55,180 דמות נוספת זו היא לוודא כי אנחנו לא ממש נכנסים 15 00:00:55,180 --> 00:00:59,200 משהו כמו 1.4 ABC בשורת הפקודה. 16 00:00:59,200 --> 00:01:02,960 >> עכשיו אנחנו הולכים ליצור כמה כינויים מאז RV2 וRV3 אינם 17 00:01:02,960 --> 00:01:04,310 שמות מאוד מועילים. 18 00:01:04,310 --> 00:01:07,660 אנחנו, במקום זאת, הולכים לקרוא אותם בקובץ וקובץ החוצה. 19 00:01:07,660 --> 00:01:11,580 עכשיו אנחנו הולכים לוודא כי הגורם שלנו היה תקף בפועל. 20 00:01:11,580 --> 00:01:16,330 אז אם גורם הוא פחות או שווה ל אפס או יותר מ 100, אז כמו לכל 21 00:01:16,330 --> 00:01:19,660 המפרט, שאנחנו צריכים לדחות גורם זה. 22 00:01:19,660 --> 00:01:23,890 >> כאשר אנחנו בטוחים שזה טוב, עכשיו אנחנו יכולים לפתוח את קובץ n, ואנחנו צריכים לעשות 23 00:01:23,890 --> 00:01:25,950 בטוח שזה נפתח בהצלחה. 24 00:01:25,950 --> 00:01:28,630 אם זה לא, שיחזיר null. 25 00:01:28,630 --> 00:01:30,390 אנחנו הולכים לפתוח את הקובץ החוצה. 26 00:01:30,390 --> 00:01:33,420 ושוב, אנחנו רוצים לבדוק לעשות בטוח שזה נפתח בהצלחה. 27 00:01:33,420 --> 00:01:37,270 ואם זה לא בהצלחה לפתוח, ולאחר מכן אנחנו גם צריכים להיות בטוחים כדי לסגור 28 00:01:37,270 --> 00:01:40,870 קובץ n אשר במקור בהצלחה פתח, או אחר שיש לנו 29 00:01:40,870 --> 00:01:42,600 דליפת זיכרון. 30 00:01:42,600 --> 00:01:46,350 >> אז עכשיו אנחנו הולכים לקרוא במפה הסיביות כותרת קובץ ומידע מפת סיביות 31 00:01:46,350 --> 00:01:48,890 כותרת מקובץ n. 32 00:01:48,890 --> 00:01:52,360 אנחנו הולכים לוודא כי קובץ n היה מפת סיביות חוקית. 33 00:01:52,360 --> 00:01:52,640 על אישור. 34 00:01:52,640 --> 00:01:55,100 >> אז עכשיו אנחנו הולכים להתחיל לעשות כמה שינויים. 35 00:01:55,100 --> 00:01:58,840 אז בגלל שאנחנו הולכים להיות שינוי דברים, אנחנו רוצים ראשון שיש לזכור 36 00:01:58,840 --> 00:02:01,510 רוחב ישן של קובץ n. 37 00:02:01,510 --> 00:02:05,160 אנחנו רוצים לזכור את הריפוד ישן קובץ n משתמש באותו חישוב 38 00:02:05,160 --> 00:02:06,990 מcopy.c. 39 00:02:06,990 --> 00:02:09,840 >> ועכשיו אנחנו הולכים לשנות כותרת מידע מפת הסיביות. 40 00:02:09,840 --> 00:02:13,630 ולכן אנחנו הכפלת שני הרוחב והגובה על ידי גורם שכן 41 00:02:13,630 --> 00:02:15,750 זה מה שאנחנו קנה מידה על ידי. 42 00:02:15,750 --> 00:02:18,420 אנחנו הולכים לקבוע את ריפוד חדש של הקובץ על ידי 43 00:02:18,420 --> 00:02:21,140 שימוש ברוחב החדש. 44 00:02:21,140 --> 00:02:27,330 ואנחנו הולכים לקבוע את חדשים גודל התמונה באמצעות מספר 45 00:02:27,330 --> 00:02:31,610 בתים באחת שורות שהוא הולך להיות מספר הפיקסלים באותה שורה 46 00:02:31,610 --> 00:02:35,960 פעמים בגודל של פיקסל בתוספת מספר הבתים של ריפוד בסוף 47 00:02:35,960 --> 00:02:40,310 מהשורה הזאת, והכפלה כל ש במספר השורות שיש לנו. 48 00:02:40,310 --> 00:02:43,800 אז זה את מספר הבתים יש לנו בנתוני התמונה שלנו. 49 00:02:43,800 --> 00:02:48,190 >> עכשיו Bf.Bfsize הולך להיות המספר בתים בבטאו את התדמית שלנו בתוספת 50 00:02:48,190 --> 00:02:49,350 בגודל של הכותרות העליונות שלנו. 51 00:02:49,350 --> 00:02:53,910 גודל אז בתוספת של כותרת קובץ מפת הסיביות וגודל של כותרת מידע מפת סיביות. 52 00:02:53,910 --> 00:02:54,510 על אישור. 53 00:02:54,510 --> 00:02:56,440 אז זהו זה לכותרות שלנו. 54 00:02:56,440 --> 00:02:59,030 אנחנו יכולים לכתוב בראש הקובץ ו כותרת מידע משלנו 55 00:02:59,030 --> 00:03:01,590 להגיש, ואנחנו טובים. 56 00:03:01,590 --> 00:03:03,800 >> עכשיו זה זמן להתחיל למעשה כתיבת פיקסל 57 00:03:03,800 --> 00:03:05,120 הנתונים לקובץ החוצה. 58 00:03:05,120 --> 00:03:10,460 אנחנו הולכים להכריז על מאגר בגודל RGB רוחב הישן משלש, ואנחנו 59 00:03:10,460 --> 00:03:13,790 הולך להכריז על משתנה בשם תחושה רציפות, וזה שאנחנו הולכים 60 00:03:13,790 --> 00:03:15,640 בתחילה להגדיר שווה ל 1 שלילי. 61 00:03:15,640 --> 00:03:19,090 אנחנו עוד נראה שאנחנו הולכים להיות באמצעות כי על מנת לעקוב אחר מה 62 00:03:19,090 --> 00:03:22,640 שורה אנחנו כרגע טענו למאגר זה. 63 00:03:22,640 --> 00:03:23,290 על אישור. 64 00:03:23,290 --> 00:03:28,750 >> אז עכשיו בניגוד למהדורה הרגילה, במקום iterating מעל ב 65 00:03:28,750 --> 00:03:32,900 קובץ, אנחנו הולכים לחזר על כל שורה בקובץ החוצה ולהבין 66 00:03:32,900 --> 00:03:38,130 איזו שורה בקובץ שברצונך הנח בשורה זו בקובץ החוצה. 67 00:03:38,130 --> 00:03:44,930 אז iterating על כל השורות באת להגיש באמצעות הגובה החדש, אנחנו הראשונים 68 00:03:44,930 --> 00:03:48,890 הולך לקבוע את השורה בישנה קובץ שאנחנו הולכים להשתמש בו, שאנחנו 69 00:03:48,890 --> 00:03:53,560 הולך לעשות על ידי לקיחה הנוכחית שורה מחולקת על ידי גורם. 70 00:03:53,560 --> 00:03:58,000 אז זה הולך לתת לנו את השורה בקובץ הישן שאנחנו רוצים. 71 00:03:58,000 --> 00:04:03,310 >> אז עכשיו אם תחושה שורה עושה y הישן לא שווה, אנחנו הולכים צריכים לקרוא את השורה 72 00:04:03,310 --> 00:04:05,940 שאנחנו רוצים לחיץ שורת נוכ שלנו. 73 00:04:05,940 --> 00:04:07,700 אז איך אנחנו הולכים לעשות את זה? 74 00:04:07,700 --> 00:04:11,650 ראשית, אנחנו הולכים כדי להבין את עמדה שמתחילה שורה שב 75 00:04:11,650 --> 00:04:13,100 קובץ מקורי. 76 00:04:13,100 --> 00:04:18,630 אז העמדה שהולכת להיות האחרון כל הכותרות שלנו ו 77 00:04:18,630 --> 00:04:21,589 שורות y ישנות החברה בעבר. 78 00:04:21,589 --> 00:04:23,880 >> וכן כמה בתים נמצא בשורה אחת? 79 00:04:23,880 --> 00:04:28,740 שוב, פעמים משולשת גודל של RGB ישן רוחב בתוספת ריפוד ישן, אז זה 80 00:04:28,740 --> 00:04:30,640 מספר הבתים בשורה אחת. 81 00:04:30,640 --> 00:04:33,680 ואנחנו רוצים לדלג על שורות y ישנות עבר. 82 00:04:33,680 --> 00:04:37,580 אז אנחנו הולכים לf לחפש ואנחנו באמצעות מבקש להגדיר להתחיל 83 00:04:37,580 --> 00:04:39,100 תחילתו של קובץ. 84 00:04:39,100 --> 00:04:42,740 אנחנו הולכים f מבקשים עמדה זו בקובץ, לשים אותנו ב 85 00:04:42,740 --> 00:04:46,500 תחילת השורה שאנחנו רוצים לקרוא למאגר שלנו. 86 00:04:46,500 --> 00:04:48,510 >> אנחנו הולכים להגדיר שורה תחושה שווה לy הישן. 87 00:04:48,510 --> 00:04:53,080 אז עכשיו אם אנחנו חוזרים לולאה ואנחנו רוצים להשתמש באותה שורה זה בקובץ משלנו, 88 00:04:53,080 --> 00:04:55,970 אז אנחנו לא הולכים לקרוא אותו שוב שלא לצורך. 89 00:04:55,970 --> 00:04:59,310 אז באמת, תחושה היא השורה רק אופטימיזציה. 90 00:04:59,310 --> 00:05:05,500 >> לבסוף, אנחנו הולכים לקרוא לתוך שורה הנוכחית RGB הרוחב הישן משלש 91 00:05:05,500 --> 00:05:08,040 שאנחנו רוצים מהקובץ המקורי. 92 00:05:08,040 --> 00:05:12,270 אז עכשיו שורת נוכ מכילה פיקסלים מ את הקובץ המקורי שאנו רוצים 93 00:05:12,270 --> 00:05:14,200 לכתוב לתוך הקובץ החוצה. 94 00:05:14,200 --> 00:05:18,960 אז עכשיו, בדיוק כמו לעיל, במקום iterating על הקובץ הישן, אנחנו צריכים 95 00:05:18,960 --> 00:05:22,560 זה כדי לחזר מעל שורות קבצים החדשים. 96 00:05:22,560 --> 00:05:27,450 גם כאן, במקום iterating על כל של פיקסלים הישנים שבשורת נוכ, 97 00:05:27,450 --> 00:05:31,210 אנחנו רוצים לחזר על כל פיקסלים בקובץ החדש שלנו בזה 98 00:05:31,210 --> 00:05:32,480 שורה מסוימת. 99 00:05:32,480 --> 00:05:34,140 >> למה אנחנו רוצים לעשות את זה? 100 00:05:34,140 --> 00:05:38,960 מכיוון שאנו רואים כאן שאנחנו לא למעשה בהכרח תוך שימוש בכל 101 00:05:38,960 --> 00:05:41,020 פיקסלים בקובץ המקורי. 102 00:05:41,020 --> 00:05:46,630 כי אם אנחנו הולכים ומצטמצמים, אנו עלולים בעצם רוצה לדלג על פיקסלים. 103 00:05:46,630 --> 00:05:48,090 ואנחנו רואים שזה - 104 00:05:48,090 --> 00:05:49,690 x מחולק בגורם - 105 00:05:49,690 --> 00:05:55,620 מקרוב מראה כאן שבו אנחנו אומרים y מחולק על ידי גורם להבין כי 106 00:05:55,620 --> 00:06:02,480 שורת y-th הישנה תואמת שורת y-th בקובץ חדש. 107 00:06:02,480 --> 00:06:05,880 >> עכשיו אנחנו הולכים לכתוב את כל פיקסלים אלה מהשורה הישנה 108 00:06:05,880 --> 00:06:07,440 לשורה החדשה שלנו. 109 00:06:07,440 --> 00:06:10,890 ברגע שעשינו את זה, אנחנו צריכים רק לשים את הריפוד בסוף השורה שלנו 110 00:06:10,890 --> 00:06:15,540 ואחרי זה אני נכין לולאה בחזרה ולהמשיך ל את כל השורות בקובץ החדש שלנו. 111 00:06:15,540 --> 00:06:19,390 בסופו של הדבר, אנחנו צריכים לסגור ישנים שלנו קובץ, סגרו את הקובץ החדש שלנו, ותמורה 112 00:06:19,390 --> 00:06:21,540 אפס, כי הכל הלך בסדר. 113 00:06:21,540 --> 00:06:24,220 >> השם שלי הוא רוב וזה היה הפסקה. 114 00:06:24,220 --> 00:06:29,184 >> [השמעת מוסיקה]