[Glazba svira] ROB Bowden: Bok, ja sam Rob, hajdemo probati ovaj na za veličinu. Dakle, opet će početi s osnovi kopija copy.c, a napraviti nekoliko promjena. Napomena odmah vidimo promjenu, gdje umjesto da provjere da li argc ne jednaka 3, želimo provjeriti ako argc nije jednako 4, budući Sada mi ne samo uzimati u infile i outfile, ali mi smo također uzimajući u nje, što je iznos koji smo skaliranje izvornu sliku. Nakon što smo sigurni u to, možemo samo pretvoriti u cijeli broj n pomoću atoi. Dakle, sad ćemo stvoriti neke nadimci, samo zovi argv 2 infile, a argv 3 outfile, jer argv 2 i argv 3 nisu jako korisne imena. Sada želimo provjeriti kako bi bili sigurni n u granicama onoga što očekujemo, pa spec. određuje da ako je manje ili jednak nuli, ili veći od 100, onda je to valjan faktor promjena veličine, i mi trebali upozoriti korisnika o tome. Jednom smo iznad svega što možemo konačno otvoriti našu INFILE, i moramo pogreškama provjeriti kako bi bili sigurni da Otvaranje nije propustio iz nekog razloga. Također moramo otvoriti naše outfile, a opet greška provjeriti kako bi bili sigurni da je ne uspiju iz nekog razloga. No, budite sigurni, ako otvaranje outfile uspjeli da trebamo zatvoriti infile, koji je već bio otvoren. Dakle, pod pretpostavkom da nije propustio, a zatim we're - baš kao u copy.c-- će se pročitati u zaglavlju iz infile. Idemo kako bi bili sigurni da je valjana bitmap, ali sada ćemo napraviti neke stvari malo drugačije. Dakle, prvo, idemo se žele zapamtite izvornu širinu i visinu od infile, jer ćemo treba ga mijenja za outfile. Dakle, sada se sjetiti da je za neobičnog razloga bi.biheight, negativna, a tako stvarna visina, u pozitivnom, mi žele uzeti apsolutnu vrijednost. Sada, padding će biti isti Izračun kao što je bio u copy.c, koristeći staru širinu, a sada smo zapravo neće promijeniti ono što je u našoj napadača. Tako ćemo umnožiti naše širinu n, jer smo skaliranje širinu n, pomnožite visinu n, budući da smo skaliranje po n, a sada imamo Izračun za novi padding temelji se na novoj širini. Dakle, mi se sada morati promijeniti neke drugim poljima u našoj napadača. Bi.biSizeImage je trebao biti veličina svih bajtova u pikselima i padding slike. I tako je veličina jednog reda od naših slika je veličina RGB triple, veličina od jednog piksela, puta broj piksela u nizu, plus padding na kraj reda. A onda ćemo pomnožite to apsolutna vrijednost naše visine dobili ukupan broj bajtova u slikovnih podataka. bf.bfSize je samo ukupan broj bajtova u našim slikovnih podataka, tako da bi.biSizeImage, plus veličina našeg zaglavlja. Dakle, dodajući na veličinu bitmap datoteku header, a veličina bitmap informacija header, OK. Dakle, to je sve što nam je potrebno da se promijeniti u našim zaglavlja. Sada ćemo napisati zaglavlje bitmap datoteku našem outfile, i naše bitmap informacija header našem outfile, a sada smo spremni za početak ide iznad samih piksela. Na taj način želimo ponoviti više u infile je linija skeniranja. Na taj način želimo ponoviti tijekom oldheight. To je razlog zašto nam treba zapamtiti izvorna visina, prije nego što smo ga mijenjati i to umanjiti n. Sada ćemo čitati jednu redak infile u buffer veličine oldwidth. Pa evo, mi smo freading veličina RGB triple, jedan piksel, a stara širina ih iz infile u našoj tampon. I to će biti cijela red u ovom polju. Tako sada, želimo ponoviti n puta za ispisati ovaj redak našem outfile n puta. I to je ono što ova petlja se radi. Ova unutarnja petlja se iterating više se red, preko polja, tiskanje svaki piksel u nizu n puta. Dakle nultoga element se ispisuje n puta, prvi element se bude tiskani n puta. I to je vrsta kako ćemo vodoravno razmjera u outfile, a ova petlja, jer smo petlje n puta, kako ćemo vertikalno mjerilo. Ovdje dolje, vidimo da nam je potrebno dodati padding na kraju svakog reda. To je razlog zašto je to unutar for petlje koji je ispisivao n redaka samo ovo je jedan red od infile. Onda ovdje, ja ću preskočiti padding u infile, jer jednom gotovi smo s jednim redom infile, mi ne stalo ono padding je. Mi samo želimo da se na drugom redu. I onda ćemo petlje natrag i učiniti sve to opet za drugi red. Konačno, nakon što smo završili sa svime što, možemo zatvoriti INFILE, u neposrednoj blizini outfile i povratak 0, jer smo gotovi. Moje ime je Rob, a to je promjena veličine. [Glazba svira]