>> [Tónlist spila]
>> ROB Bowden: Hæ, ég er Rob skulum reyna þetta á fyrir stærð.
Svo erum við aftur að fara að byrja með grundvallaratriðum afrit af copy.c og
gera nokkrar breytingar.
Athugið strax við sjá breytingar, sem í stað þess að stöðva til að sjá hvort
argc ekki jafn 3, við viljum að athuga ef argc ekki jafn 4, þar
nú erum við ekki bara að taka í INFILE og OUTFILE, en við erum líka að taka á
n, sem er sú upphæð sem við erum stigstærð upprunalegu myndina með.
Þegar við erum viss um að við getum bara umbreyta n heiltala með atoi.
>> Svo, nú erum við að fara að búa til sumir samheiti, bara hringja argv 2 INFILE, og
argv 3 OUTFILE, því argv 2 og argv 3 eru ekki mjög gagnlegar nöfn.
Nú viljum við að ganga úr skugga n er innan þeirra marka sem við búast við, þannig að
sérstakur tilgreinir að ef það er minna en eða jöfn með núlli, eða meiri en 100,
þá er það ógilt Búa þáttur, og við ættum að vara notandann um það.
>> Þegar við erum utan allt það, við getum loksins opna INFILE okkar, og við þurfum
til villa stöðva til að tryggja að opnun ekki mistakast af einhverjum ástæðum.
Við þurfum einnig að opna OUTFILE okkar, og aftur villa athuga til að tryggja að
ekki mistakast af einhverjum ástæðum.
En vera viss um að ef opnun á OUTFILE mistókst að við þurfum að loka
á INFILE, sem var þegar opnað.
>> Svo, miðað við að ekki mistakast, þá Vid - eins copy.c--
að fara að lesa í hausinn frá INFILE.
Við erum að fara að ganga úr skugga um það er í gildi punktamynd, en nú erum við að fara að gera sumir
hlutina aðeins öðruvísi.
Svo fyrst, við erum að fara til að vilja muna upprunalega breidd og hæð
af INFILE, vegna þess að við erum að fara að að breyta því fyrir OUTFILE.
Svo nú man að fyrir undarlegum ástæðum bi.biheight, er neikvætt, og
svo í raun hæð, í jákvætt, við vilja til að taka algildi.
>> Nú, padding er að fara til vera the sami útreikning eins og það var í copy.c,
nota gamla breidd, og nú erum við í raun að fara að breyta
Hvað er í hausnum okkar.
Þannig að við erum að fara að margfalda breidd okkar með n, þar sem við erum stigstærð breiddina með
n, margfalda hæð með n, þar sem við erum stigstærð af n, og nú höfum við
útreikning fyrir nýja padding byggt á nýju breidd.
>> Svo nú þurfum við að breyta einhverju öðrum sviðum í haus okkar.
Bi.biSizeImage er ætlað að vera stærð allra bæti í dílar
og padding á myndinni.
Og svo á stærð við einni röð af okkar Mynd er stærð af RGB þrefaldur, stærð
af a einn pixla, sinnum fjöldi punktar í röð, auk padding á
í lok röð.
Og þá ætlum við að margfalda það með algildi hæð okkar til að fá
heildarfjölda bæti í myndgagna.
bf.bfSize er bara heildarfjöldi bæti í gögnum ímynd okkar, svo
bi.biSizeImage, auk stærð hausa okkar.
Svo að bæta á the stærð af punktamynd skrá haus, og stærð punktamynd upplýsingar
haus, OK.
Svo það er allt sem við þurfum að breyta í haus okkar.
Nú munum við skrifa punktamynd skrá haus til OUTFILE okkar, og upplýsa okkar punktamynd
haus að OUTFILE okkar, og nú við erum tilbúin til að byrja að fara
á raunverulegum dílar.
>> Þannig að við viljum að iterate yfir á INFILE er grannskoða línur.
Þannig að við viljum að iterate yfir oldheight.
Þetta er ástæða þess að við þurftum að muna upprunalega hæð, áður en við að breyta því
og minnkaðar það með n.
Nú erum við að fara að lesa einn röðinni í INFILE inn í
biðminni stærð oldwidth.
Svo hér erum við freading stærð RGB þrefaldur, einn pixla, og gamla breidd
þá frá INFILE í biðminni okkar.
Og það er að fara að vera heilt róa í þessu fylki.
Svo nú viljum við að iterate n sinnum til prenta þessa röð til OUTFILE okkar n sinnum.
Og svo er það það sem þetta lykkja er að gera.
Þessi innri lykkja er iterating yfir róa sig, yfir í fylkinu, prentun
Hver pixla í array n sinnum.
Svo 0 þátturinn er verið að prenta n sinnum, fyrsti þáttur er að vera
prentuð n sinnum.
Og það er svoleiðis hvernig við ætlum að lárétt í upp OUTFILE og
þetta lykkja, þar sem við erum lykkja n sinnum, er hvernig við erum að fara að
lóðrétt mælikvarða.
>> Hérna sjáum við að við þurfum að bæta padding í lok hvers röð.
Þessi 'hvers vegna þetta er inni í for lykkju sem er prentun út n raðirnar bara
þetta ein röð frá INFILE.
Þá niður hérna, ég er að fara að sleppa yfir padding í INFILE, síðan einu sinni
við erum búin með eina röð af INFILE, eigum við ekki sama um
hvað padding var.
Við viljum bara að komast að annarri röð.
Og þá munum við lykkja til baka og gera allt þetta aftur fyrir annarri röðinni.
>> Að lokum, þegar við erum búin með allt sem, við getum loka INFILE, nálægt
á OUTFILE og aftur 0 vegna þess að við erum að gera.
>> Mitt nafn er Rob, og þetta var Resize.
>> [Tónlist spila]