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 BOWDEN:你好。 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 >> 所以一旦我們確定的是,我們要 用s掃描f,將字符串轉換 12 00:00:45,430 --> 00:00:49,030 argv1為float。 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 >> 所以現在不像標準版, 而不是迭代的中 65 00:03:28,750 --> 00:03:32,900 文件中,我們將遍歷每個 行中的out文件,並找出 66 00:03:32,900 --> 00:03:38,130 我們希望它在文件中的行 把這個排在了所有的文件。 67 00:03:38,130 --> 00:03:44,930 所以遍歷所有行中的列 使用新的高度文件,我們首先 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尋求和我們 用seek設置為從一開始 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 >> 我們要設置的行 麻木等於舊年。 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 所以,現在,就像上面的,而不是 遍歷舊文件,我們需要 95 00:05:18,960 --> 00:05:22,560 它遍歷新的文件行。 96 00:05:22,560 --> 00:05:27,450 而不是遍歷那麼這裡,所有的 老像素,在當前行, 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 密切反映在這裡,我們說ÿ 通過因子分為弄清楚, 106 00:05:55,620 --> 00:06:02,480 老Y-th行對應於 第y行的這個新文件。 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 >> [音樂播放]