[音樂播放] ROB BOWDEN:你好。 我搶,讓大小 了這個問題。 所以,我們要開始copy.c為 一個模板,但我們要成為 使得相當多的變化。 現在我們看到,我們會立即作出 改變的地方我們不再檢查 我們RXC不等於3,但現在 我們正在檢查RC不等於4。 因為我們也希望包括在 除了在文件和簽出文件 參數,F這將是這 因素,使我們正在擴展。 所以一旦我們確定的是,我們要 用s掃描f,將字符串轉換 argv1為float。 而我們將要存儲 在因素。 這種額外的字符是確保 我們實際上並沒有進入 像1.4 ABC 在命令行中。 現在,我們要創建一些別名 因為RV2和RV3不 非常有幫助的名字。 我們,而是要打電話 他們在文件和出文件。 現在,我們要確保 我們的因素是實際有效的。 因此,如果因子是小於或等於 零或大於100,則按照 規範,我們應該拒絕 這個因素。 當我們確定它的好,現在我們可以 打開n個文件,我們必須做出 確保它被成功打開。 如果沒有,那將返回null。 我們要開出的文件。 再次,我們要進行檢查,以 確保它的成功開業。 如果它沒有成功打開,然後 我們還需要確保關閉 n個文件,該文件最初成功 打開,否則我們有一個 內存洩漏。 所以,現在我們要讀取的位圖 文件頭和位圖信息 從n個文件頭。 我們將確保該 n文件是一個有效的位圖。 確定。 所以,現在我們要開始 做一些改變。 所以,因為我們將要改變 的東西,我們首先要記住的 老寬度n個文件。 我們要記住的老填充 以同樣方法計算n個文件 從copy.c. 現在我們要改變 位圖信息頭。 所以我們既乘以寬度 而且由於採用因子高度 這就是我們擴展了。 我們將確定 通過該文件的新填充 使用新的寬度。 而且我們要確定新 使用的數量的圖像的大小 在其中將要單列字節 是在該行中的像素的數目 一個像素的次大小加上 填充字節在最後數 該行,並乘以所有 通過我們有行數。 所以這是字節數 我們在我們的圖像數據。 Bf.Bfsize現在將是數 在我們的形象公測字節加上 我們的頭的大小。 位圖文件頭,這樣加上大小 和位圖信息頭的大小。 確定。 所以這是它為我們的頭。 我們可以寫入文件頭和 信息標題給我們出 文件,我們是很好的。 現在是時候開始實際 寫像素 數據到輸出文件中。 我們要聲明大小的緩衝區 老寬的RGB三元組,我們很 要聲明一個變量叫 排麻木了,這是我們要 初始設定為等於負1。 我們會看到,我們將使用 即,為了保持什麼軌道 我們目前已經加載的行 到此緩衝區中。 確定。 所以現在不像標準版, 而不是迭代的中 文件中,我們將遍歷每個 行中的out文件,並找出 我們希望它在文件中的行 把這個排在了所有的文件。 所以遍歷所有行中的列 使用新的高度文件,我們首先 要確定在舊的行 文件中,我們要使用,這我們 要做到通過採取這種電流 排除以係數。 所以,那將會給我們的行 在我們想要的舊文件。 所以,現在如果排麻木不等於老Y, 我們將要讀的行 我們希望為我們的當前行緩衝區。 那麼我們如何做到這一點? 首先,我們要弄清楚 開頭的那行的位置 原始文件。 所以該位置將是 過去我們所有的頭文件和 現在過去老y行。 所以多少字節 在單個行? 同樣,RGB的大小三舊時代 寬度加上舊的填充,所以這是 在單行中的字節數。 我們要跳過老y行。 所以我們要到f尋求和我們 用seek設置為從一開始 開頭的文件。 我們打算到f尋求這個位置 在文件中,把我們的 開始我們想要的行 閱讀到我們的緩衝區。 我們要設置的行 麻木等於舊年。 所以,現在如果我們回圈,我們希望 使用我們出文件中的此同一行, 那麼我們不會閱讀 它再一次不必要的。 所以真的,行的是麻木 只是一個優化。 最後,我們要讀入 當前行老寬度RGB三元組 我們希望從原始文件。 所以現在當前行中包含的像素從 我們要原始文件 寫入到輸出文件中。 所以,現在,就像上面的,而不是 遍歷舊文件,我們需要 它遍歷新的文件行。 而不是遍歷那麼這裡,所有的 老像素,在當前行, 我們要遍歷所有的 在我們這個新的文件像素 特定的行。 我們為什麼要那麼做? 因為我們在這裡看到,我們不是 其實不一定使用所有的 像素中的原始文件。 因為如果我們要萎縮,我們可能 其實想跳過的像素。 而且我們看到,這一點 - x除以係數劃分 - 密切反映在這裡,我們說ÿ 通過因子分為弄清楚, 老Y-th行對應於 第y行的這個新文件。 現在,我們將要編寫所有 從舊行這些像素 進入我們的新行。 一旦我們做到了這一點,我們需要公正 把填充在我們行的結尾 我們會回送和持續 所有在我們的新文件中的行。 最後,我們需要關閉我們的老 文件,關閉我們的新文件,並交回 零,因為一切正常。 我的名字是羅布,這是課間休息。 [音樂播放]