>> [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]