>> [音樂播放]
>> ROB BOWDEN：你好，我是羅布，讓我們 試試這個，看看尺寸。
因此，我們再次要開始 該copy.c的基本上是一個副本，
做一些修改。
請注意，我們立刻看到了變化，其中 而不是檢查，以查看是否
ARGC不等於3，我們要檢查 如果的argc不等於4，因為
現在我們不只是走在INFILE 和輸出文件，但我們也正在採取的
n，它就是我們的量 通過縮放原始圖像。
一旦我們確信這一點，我們只要 使用atoi的轉換n到一個整數。
>> 所以，現在我們要創造一些 別名，只需要調用的argv 2 INFILE和
argv的3 OUTFILE，因為argv的2和 argv的3不非常有幫助的名字。
現在，我們要檢查，以確保n是 的範圍內，我們預計，所以
規範規定，如果它小於或 等於零，或大於100，則
那麼這是一個無效的大小調整的因素， 我們應該警告用戶。
>> 一旦我們超越了這一切，我們可以 終於打開我們INFILE，我們需要
錯誤檢查以確保該 開放沒有出於某種原因失敗。
我們還需要打開我們的輸出文件，並 再次錯誤檢查，以確保
由於某種原因，沒有失敗。
不過可以肯定的，如果的開幕 輸出文件失敗，我們需要關閉
infile中，這是已經打開。
>> 因此，假設沒有失敗，那麼 方向走 - 就像在copy.c- -
要閱讀的標頭 從infile中。
我們要確保它是有效的 位圖，但現在我們要做一些
事情有點不同。
因此，首先，我們要要 記得原來的寬度和高度
infile中的，因為我們要 要改變它的輸出文件。
所以，現在記住，對於陌生的原因 bi.biheight，是負的，並
因此實際高度，以積極的，我們 要取絕對值。
>> 現在，該填充將是相同的 計算因為它是在copy.c，
使用舊的寬度，而現在我們是 究竟要改
什麼在我們的頭。
所以我們要通過倍增我們的寬度 N，因為我們通過縮放寬度
N，用n乘以高度，因為我們是 用n縮放，而現在我們有
計算一個新的填充 基於新的寬度。
>> 所以，現在我們需要改變一些 在我們的標題等領域。
Bi.biSizeImage被認為是本 在像素中的所有字節的大小
和圖像的填補處理。
因此我們的單個行的大小 圖像是RGB格式的三倍大小，大小
單個像素的，時間的數 在一行像素，加上所述填補在
該行的末尾。
然後我們要乘上 我們高度得到的絕對值
總字節數 中的圖像數據。
bf.bfSize僅僅是總數 在我們的圖像數據的字節，所以
bi.biSizeImage，加 我們的頭的大小。
因此，增加對位圖文件的大小 頭和位圖信息大小
頭，確定。
所以這就是我們所需要 改變我們的頭。
現在，我們將寫入位圖文件頭 我們的輸出文件，而我們的位圖信息
包頭到我們OUTFILE，現在 我們已經準備好開始準備
在實際的像素。
>> 因此，我們要遍歷 infile中的掃描線。
因此，我們要遍歷oldheight。
這就是為什麼我們需要記住的 原來的高度，才改變它
並用n縮放它。
現在，我們要讀一個單一的 行infile中的成
緩衝區大小oldwidth的。
RGB的所以在這裡，我們freading大小 三，一個像素，和老寬度
他們從INFILE到我們的緩衝區。
而這將是一個完整的 排在這個數組。
所以，現在，我們要迭代N次 打印此行我們的輸出文件n次。
所以這就是這個循環在做什麼。
這個內層循環遍歷 行本身，該數組，印刷
數組n次中的每個像素。
這樣第零個元素被打印 n次，第一個元素是
打印n次。
這就是那種怎麼樣，我們要 橫向擴展的輸出文件，並
這個循環，因為我們循環Ñ 次，是我們要如何
垂直刻度。
>> 到這裡，我們看到，我們需要添加 填充在每一行的末尾。
這就是為什麼這個是for循環內 這是打印出n行的只是
此一行從infile中。
那麼到這裡，我將跳過 在infile中的填充，因為一旦
我們正與的一排做 INFILE，我們不關心
什麼是填充了。
我們只是想要得到的第二行。
然後我們將環回，並盡 這再次用於第二行。
>> 最後，當我們做完這些， 我們可以關閉INFILE，靠近
outfile中，並返回 0，因為我們就大功告成了。
>> 我的名字是羅布，這是調整大小。
>> [音樂播放]