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