>> [Predvaja glasba]
>> ROB Bowden: Živjo, jaz sem Rob, dajmo poskusite to na za velikost.
Torej, spet se bo začela s v bistvu kopija copy.c, in
narediti nekaj sprememb.
Opomba takoj opazimo spremembo, kjer je Namesto preverjanje, da vidim, če
argc ni enak 3, smo želeli preveriti če argc ni enako 4, od
Zdaj smo ne samo ob v INFILE in outfile, vendar smo tudi ob v
n, kar je znesek, ki smo luščenje izvirno sliko s.
Ko smo prepričani, da smo lahko samo pretvorbo n na celo število pomočjo atoi.
>> Torej, zdaj gremo ustvariti nekaj vzdevki, samo pokličite argv 2 INFILE, in
argv 3 outfile, ker argv 2 in argv 3 niso zelo koristne imena.
Zdaj želimo, da preverite, ali je n v mejah pričakujemo, da
spec določa, da če je manjša ali enak nič, ali večja od 100,
nato pa, da je neveljavna resize dejavnik, in bi morali opozoriti uporabnika na to.
>> Ko bomo onkraj tega, da smo lahko končno odprli naše INFILE, zato moramo
do napak, preverite, da odprtina ni ne iz nekega razloga.
Prav tako moramo odpreti našo OUTFILE, in spet napaka preverite, da
nisem ne iz nekega razloga.
Vendar se prepričajte, če odprtje outfile ni uspelo, da smo morali zapreti
INFILE, ki je že odprta.
>> Torej, ob predpostavki, da ne bo propadel, potem mi bomo - tako kot v copy.c--
bom prebral v glavi od INFILE.
Bomo prepričajte, da je veljavna bitna, zdaj pa bomo še nekaj
stvari nekoliko drugače.
Torej, najprej bomo želeli Spomnim se izvirno širino in višino
v INFILE, ker gremo na se ga spreminja v izhodna_datoteka.
Torej sedaj, ne pozabite, da za čudnih razlogov bi.biheight, je negativna, in
tako da dejanska višina, pozitivna, smo želeli, da absolutno vrednost.
>> Zdaj, oblazinjenje se bo enaka izračun, kot je bilo v copy.c,
po stari širino, in zdaj smo dejansko dogaja, da spremenite
, kar je v naši glavi.
Torej bomo pomnožite našo širino, ki jih n, saj smo povečanje širine, ki jih
n, pomnožite višino zn, ker smo luščenje zn, in zdaj imamo
Izračun za novo oblazinjenje temelji na novi širine.
>> Torej sedaj moramo spremeniti nekatere druga področja v naši glavi.
Bi.biSizeImage naj bi Velikost vseh bajtov v pik
in oblazinjenje slike.
Tako velikost eni vrstici našega Slika je velikost RGB triple, velikost
enega samega piksla, krat število točk zapored, plus oblazinjenje na
konca vrste.
In potem bomo pomnožite s Absolutna vrednost našega višine, da bi dobili
Skupno število bajtov v slikovnih podatkov.
bf.bfSize je samo skupno število bajtov v naših slikovnih podatkov, tako da
bi.biSizeImage, plus velikost naših glavah.
Torej, dodal na velikost datoteke bitnih Glava in velikost bitne slike info
glava, OK.
Tako da je vse, kar potrebujemo, da spremeniti v naših glavah.
Sedaj bomo napisali glavo bitno datoteko na naše izhodna_datoteka, in naš info bitne
Glava za naše izhodna_datoteka, in zdaj smo pripravljeni za začetek bo
na dejansko pik.
>> Tako želimo ponoviti čez skeniranih vrstic v INFILE je.
Tako želimo ponoviti čez oldheight.
To je razlog, zakaj smo potrebovali, da se spomnimo Prvotni višina, preden smo ga spremenite
in ga zmanjšati s n.
Zdaj bomo prebrali en sam vrstica INFILE v
buffer velikosti oldwidth.
Torej, tukaj, smo freading velikost RGB triple, en piksel, in staro širina
jim od INFILE v naši buffer.
In to se dogaja, da se celotna veslati v tem polju.
Torej sedaj, želimo ponoviti n-krat na natisni to vrstico na naši izhodna_datoteka n-krat.
In tako da je tisto, kar ta zanka počne.
Ta notranja zanka ponavljanjem preko se vrstica, preko diod, tiskanje
vsak pixel v matriki n-krat.
Torej je Ničti element, ki se tiska n-krat, je prvi element čemer
tiskani n-krat.
In to je nekako, kako bomo vodoravno lestvico v izhodna_datoteka, in
ta zanka, saj smo zanka n krat, je, kako bomo
vertikalno lestvico.
>> Tu spodaj, vidimo, da moramo dodati oblazinjenje na koncu vsake vrstice.
Zato je to v notranjosti za zanke da je tiskanje z n vrstic samo
to ena vrstica od INFILE.
Potem sem dol, bom preskočiti oblazinjenje v INFILE, saj enkrat
smo končali z eno vrsto INFILE, mi ni mar
kaj je bilo oblazinjenje.
Pravkar smo želeli priti na drugi vrsti.
In potem bomo zanko nazaj in storiti vse Tudi to v drugi vrsti.
>> Nazadnje, ko smo končali z vsem tem, lahko zaprete INFILE, blizu
outfile, in povratek 0, ker smo končali.
>> Moje ime je Rob, in to je bila velikost.
>> [Predvaja glasba]