[MUSIC PLAYBACK] ROB Bowden: Ahoj, ja som Rob, poďme skúste to kvôli veľkosti. Takže sme sa opäť začnú s v podstate kópia copy.c, a vykonať niekoľko zmien. Poznámka okamžite vidíme zmeny, kde miesto kontroly, či argc nie je rovné 3, chceme skontrolovať ak argc nie je rovné 4, pretože Teraz sme nielen brať v Infil a outfile, ale my sme tiež pričom v n, čo je suma, ktorú sme mierka pôvodný obraz. Potom, čo sme si istí, že môžeme len previesť n na integer pomocou atoi. Tak, teraz budeme vytvárať nejaké prezývky, stačí zavolať argv 2 Infil, a argv 3 outfile, pretože argv 2 a argv 3 nemôže veľmi užitočné mená. Teraz chceme, aby skontrolujte, či n je v medziach očakávame, takže spec uvádza, že v prípade, že je menší ako alebo sa rovná nule, alebo väčšia ako 100, potom je to neplatné resize faktor, a mali by sme varovať používateľov, že. Potom, čo sme za všetko, môžeme konečne otvoriť naše uložená_hra, a my potrebujeme chyby skontrolovať, aby sa ubezpečil, že otvorenie nesklamal z nejakého dôvodu. Musíme tiež otvoriť naše outfile, a opäť chyba skontrolovať, aby sa ubezpečil, že nezlyhal z nejakého dôvodu. Ale byť istí, či otvorenie outfile nedokázal, že musíme zatvoriť Infil, ktorá už bola otvorená. Takže, za predpokladu, že nezlyhal, potom Sme - rovnako ako v copy.c-- bude čítať v záhlaví od Infil. Chystáme sa uistil, že to platí bitmap, ale teraz budeme robiť nejaké veci trochu inak. Tak za prvé, budeme chcieť, aby spomenúť na pôvodnú šírku a výšku zo vstupný súbor, pretože budeme sa mení ho na outFile. Takže teraz si uvedomiť, že za podivných dôvodov bi.biheight, je negatívny, a takže skutočná výška, v pozitívne, sa Chcete mať absolútnu hodnotu. Teraz, výplň bude rovnaký výpočet, ako to bolo v copy.c, používať staré šírku, a teraz sme v skutočnosti sa zmení to, čo je v našom záhlaví. Takže budeme násobiť naše šírku podľa n, pretože sme škálovanie šírku podľa n, vynásobte výšku n, pretože sme škálovanie podľa n, a teraz máme výpočet pre novú výplň vztiahnuté na novú šírku. Takže teraz musíme zmeniť niektoré Všetky ostatné položky v našom záhlaví. Bi.biSizeImage má byť Veľkosť všetkých bytov v pixeloch a polstrovanie z obrázku. A tak veľkosť jedného riadku našej obrázok je veľkosť RGB trojnásobný, veľkosť jediného pixelu, krát počet pixelov v rade, plus polstrovanie na koniec riadku. A potom budeme násobiť, že absolútna hodnota našej výšky dostať celkový počet bajtov v obrazových dátach. bf.bfSize je len celkový počet z bytov v našich obrazových dát, takže bi.biSizeImage, plus Veľkosť našich hlavičiek. Takže s tým, na veľkosti súboru bitovej mapy hlavičky a veľkosť bitmapy informácií záhlavie, OK. Tak to je všetko, čo potrebujeme Zmena v našich hlavičkách. Teraz budeme písať hlavičku bitmap súboru našej outFile, a naše bitmapové informácie header našej outFile, a teraz Sme pripravení začať chodiť na skutočných pixelov. Takže chceme iterácii sňatí na vstupný súbor je. Takže chceme iterovat cez oldheight. To je dôvod, prečo sme potrebovali mať na pamäti, pôvodnej výšky, než sme to zmeniť a zmenšený ju n Teraz budeme čítať jeden riadok Infil do vyrovnávaciu pamäť o veľkosti oldwidth. Tak tu sme freading veľkosť RGB trojlôžková, jeden pixel, a starý šírka je z Infil do našej pamäti. A že to bude celý ř v tomto poli. Takže teraz, chceme iterovat n časy vytlačiť tento riadok do našej outFile n krát. A tak to je to, čo táto slučka sa robí. Táto vnútorná slučky iterácie ř sám, cez pole, tlač Každý pixel v poli n krát. Takže nultý prvok je vytlačená n krát, prvý prvok je tlačený n-krát. A to je trochu o tom, ako budeme vodorovne škálovať v outFile, a táto slučka, pretože sme opakovanie n krát, je to, ako budeme vertikálne stupnice. Tu dole vidíme, že musíme pridať polstrovanie na konci každého riadku. To je dôvod, prečo je to vo vnútri pre slučku že ich vytlačiť na n riadkov len tento jeden riadok z Infil. Potom tu dole, budem preskočiť polstrovanie v Infil, pretože akonáhle sme hotoví s jedným radom Infil, my sa nestaráme o čo polstrovanie bolo. Chceme len, aby sa na druhom riadku. A potom budeme prechádzať späť a urobiť všetko, To opäť na druhom riadku. Nakoniec, keď sme hotoví s tým všetkým, môžeme uzavrieť uložená_hra, v blízkosti outfile, a návrat 0, pretože sme hotoví. Volám sa Rob, a to resize. [MUSIC PLAYBACK]