[Muusika mängib] ROB BOWDEN: Tere, ma olen Rob, olgem proovige seda selga. Niisiis, me oleme jälle lähed alustada põhiliselt koopia copy.c ja teha mõningaid muudatusi. Märkus kohe näeme muutusi, kui selle asemel, et kontrollida, kas argc ei võrdu 3, me tahame, et kontrollida kui argc ei võrdu 4, kuna Nüüd me ei ole ainult võtmine infile ja outfile, kuid me ka võtmine n, mis on summa, mis me oleme tagi originaalpildi. Kui oleme kindlad, et saame lihtsalt teisendada n täisarv kasutades atoi. Nii, nüüd me ei kavatse luua mingit varjunimed, helistage argv 2 infile ja argv 3 outfile, sest argv 2 ja argv 3 ei ole väga kasulik nimed. Nüüd tahame veenduge, n on piires eeldame, et spec ette, et kui see on väiksem või null, või suurem kui 100, siis see on kehtetu resize tegur, ja me peaks hoiatama kasutaja seda. Kui me pärast kõik, et suudame lõpuks avada meie infile ja peame viga veenduge, et avamine ei õnnestu mingil põhjusel. Samuti on meil vaja, et avada meie outfile ja jälle viga veenduge, et ei suuda mingil põhjusel. Aga kindlasti, kui avamine outfile ebaõnnestunud, et me peame sulgema infile, mis oli juba alanud. Seega eeldades, et ei suuda, siis Me - just nagu copy.c-- loen päises alates infile. Me veenduge, et see on kehtiv bitmap, aga nüüd me teeme mõned asjad natuke teistmoodi. Nii et esimene, me tahame mäleta originaal laius ja kõrgus Euroopa infile, sest me ei kavatse muutumas see outfile. Nüüd pidage meeles, et kummaline põhjustel bi.biheight, on negatiivne ning nii et tegelik kõrgus on positiivne, me tahame võtta absoluutväärtus. Nüüd padding saab olema sama arvutamisel, kui see oli copy.c, kasutades vana laius, ja nüüd me oleme tegelikult muutu Mis on meie päises. Nii et me korrutame meie laiuse n, sest me tagi laiuse n, korrutada kõrgus n, sest me oleme tagi n, ja nüüd on meil arvutamise uus polster põhineb uute laiusega. Nüüd peame muutma mõningaid teistes valdkondades meie kaudu. Bi.biSizeImage peaks olema suurus kõikide baitide pikslit ja polstrist pilt. Ja nii suuruse ühte rida meie pilt on suurusega RGB kolmekordne suurus ühe piksli korda rohkem pikslite rida pluss polster lõppu reas. Ja siis me korrutame selle poolt absoluutväärtus meie kõrgus saada baitide kujutise andmetes. bf.bfSize on lihtsalt koguarv baitide meie kujutise andmeid, et bi.biSizeImage pluss suurus meie päised. Niisiis, lisades suurusest bitmap faili päise ja suurus bitmap info header, OK. Nii et kõik me peame muuta meie päised. Nüüd me kirjutada bitmap faili päis meie outfile ja meie bitmap info header meie outfile ja nüüd Me oleme valmis alustama läheb üle tegelik pikslit. Nii et me tahame Käi infile skaneerimise read. Nii et me tahame Käi oldheight. See on põhjus, miks meil on vaja meeles pidada, algne kõrgus, enne kui me seda muuta ja suurendasime seda n. Nüüd me ei kavatse lugeda ühe reas infile sisse puhverala suurus oldwidth. Nii et siin me oleme freading suurus RGB kolmekordne, üks piksel ja vana laius neid infile meie puhvris. Ja see saab olema kogu rida see massiiv. Nüüd tahame kinnitada, n korda prindi see rida meie outfile n korda. Ja nii see on, mida see silmus teeb. See sisemine loop on iterating üle rida iseenesest üle massiivi, trükkimine iga piksli massiivi n korda. Nii nullis element on trükitud n korda, esimene element on trükitud n korda. Ja see on omamoodi kuidas me horisontaalselt skaala outfile ja see loop, sest me silmukoiminen n korda, on see, kuidas me vertikaalselt skaalal. Siia alla, näeme, et meil on vaja lisada polster iga rea ​​lõpus. Sellepärast on see sees loop mis on väljatrükk n rida ainult see rida alates infile. Siis siin, ma lähen vahele jätta polstri infile, sest kui me teha üks rida infile, me ei hooli mida polster oli. Me lihtsalt tahame, et saada teine ​​rida. Ja siis me loop tagasi ja teha kõik see jälle teises reas. Lõpuks, kui me teinud kõik, et saame sulgeda infile lähedal outfile ja tagastamine 0, sest me oleme valmis. Minu nimi on Rob ja see oli resize. [Muusika mängib]