[Glazba svira] ROB Bowden: Bok. Ja sam Rob i neka je veličina do ovog problema. Tako ćemo početi s copy.c kao Predložak, ali mi ćemo biti stvaranje vrlo malo promjena. Sada vidimo da se odmah praviš promijeniti u kojem više ne provjeravamo za naš rxc ne jednaka 3, ali sada Provjeravamo rc ne jednaka 4. Budući da smo također žele uključiti u dopunom u datoteku i iz datoteke Argumenti, f koja će biti to faktor kojim si mi skaliranje. Dakle, nakon što smo sigurni u to, želimo koristiti s skeniranje f pretvoriti string argv1 na plovak. I mi ćemo se spremiti da faktor. Ovaj dodatni lik pazeći da mi se zapravo ne ulazi nešto poput 1,4 ABC na zapovjednoj liniji. Sada ćemo stvoriti neke pseudonime budući RV2 i RV3 nisu vrlo korisne imena. Mi smo, umjesto toga, ide na poziv ih u datoteku i iz datoteke. Sada ćemo biti sigurni da Naš faktor je zapravo vrijede. Dakle, ako je faktor manji od ili jednak nula ili veće od 100, a zatim po spec., trebamo odbaciti taj faktor. Kad smo se uvjerili da je dobro, sad možemo otvoriti n datoteku, i moramo napraviti sigurni da je uspješno otvorila. Ako to nije učinio, da će se vratiti null. Mi ćemo otvoriti out datoteku. I opet, želimo provjeriti kako bi sigurni da uspješno je otvorila. A ako to nije uspješno otvorili, a zatim moramo biti sigurni da zatvorite n sliku koja je izvorno uspješno otvoren, inače imamo otjecanje memorije. Pa sad idemo čitati u bitmap file header i bitmap info header od n datoteku. Mi ćemo osigurati da n datoteka bila valjana bitmap. OK. Pa sad idemo na početak stvaranje neke promjene. Pa zato što smo ide da se mijenja stvari, prvo želim sjetiti stari širina n datoteke. Mi želimo sjetiti starih punjenje od n datoteka koristeći isti izračun iz copy.c. A sad idemo mijenjati bitmap info header. I tako smo se množenjem oba širinu i visina faktorom od to je ono što smo skaliranje strane. Idemo utvrditi Novi padding datoteke po koristeći novu širinu. I mi ćemo utvrditi novi Veličina slike pomoću broja bajtova u jednom retku koji će se se broj piksela u tom retku puta veći od piksela plus Broj bajtova padding na kraju tog reda, i pomnoži sve to po broju redova koje imamo. Tako da je broj bajtova imamo u našim slikovnih podataka. Bf.Bfsize sada će biti broj bajtova u našem slike beta plus veličina našeg zaglavlja. Dakle plus veličina zaglavlja bitmap datoteke i veličinu bitmap info napadača. OK. Tako da je to za naše zaglavlja. Možemo pisati glavu datoteka i Informacije header našem out podnijeti, a mi smo dobri. Sada je vrijeme da počnete zapravo pisanje piksel Podaci na van datoteku. Mi ćemo proglasiti tampon veličine Stari širina RGB trojke, a mi smo će proglasiti varijablu otupio red, što je idemo u početku postavili jednak negativnom 1. Vidjet ćemo kako ćemo se pomoću da bi se pratiti što red Trenutno imamo učitava u ovoj tampon. OK. Tako sada za razliku od standardnog izdanja, umjesto iterating nad na in file, idemo ponoviti tijekom svake redak u datoteci van i shvatiti koji redak u datoteci u želimo stavite se u ovom retku u datoteci van. Dakle iterating preko svih redova u out file pomoću nove visine, mi smo prvi će odrediti red u stara podnijeti ćemo koristiti, koje smo će učiniti tako da ovu struju red podijeljena faktor. Tako da će nam dati redak u starom datoteke koje želimo. Pa sad, ako otupio red nije jednako stari y, ćemo morati pročitati redak da želimo u našoj monete tampon red. Pa kako ćemo to učiniti? Prvo, mi ćemo shvatiti položaj koji počinje taj red u Izvorna datoteka. Tako je kako je pozicija će biti prošlost sve naše zaglavlja i Sada posljednjih stare y redaka. I tako koliko je bajtova u jednom redu? Opet, veličine RGB triple puta stara Širina plus stara padding, tako da je broj bajtova u jednom retku. I želimo preskočiti prošlosti stare y redaka. Tako ćemo f traže, a mi smo pomoću traže set početi od početku datoteke. Idemo u f nastojati tom položaju u spisu, stavljajući nas na s početkom u redu želimo čitati u našoj tampon. Mi ćemo postaviti red otupio jednak starom y. Pa sad, ako se povratna petlja i želimo taj isti red u naše iz datoteke, onda nećemo čitati je ponovno nepotrebno. Pa stvarno, otupio je red Samo optimizacije. Konačno, idemo čitati u Trenutna red stara širina RGB trojke da želimo iz izvorne datoteke. Pa sad sad red sadrži piksele od Izvorna datoteka koje želimo pisati u out datoteku. Tako sada, baš kao i prije, umjesto iterating preko stare datoteke, trebamo to ponoviti preko novih datoteka redovima. Pa ovdje, umjesto da iterating preko svega od starih piksela koji je u monete redom, želimo ponoviti tijekom sve piksela u našoj novoj datoteci u to Posebno red. Zašto želimo to učiniti? Jer ovdje vidimo da nismo zapravo nužno koristiti sve piksela u izvornoj datoteci. Jer ako smo se smanjuje, što bi moglo zapravo žele preskočiti piksela. A vidimo da je to - x podijeljena faktor - usko ogledala do ovdje gdje smo rekli y podijeljena faktor shvatiti da stara y-og reda odgovara y-og reda u ovoj novoj datoteci. Sada ćemo napisati sve ove piksela od starog redu u našem novom redu. Nakon što smo to učinili, moramo samo staviti padding na kraju našeg reda A mi ćemo petlju leđa i nastaviti sve od reda u našoj novoj datoteci. Na kraju, moramo zatvoriti naš stari podnijeti, zatvoriti našu novu datoteku, i povratak nuli, jer sve je u redu. Moje ime je Rob i to je pauza. [Glazba svira]