>> [Musiikki soi]
>> ROB BOWDEN: Hei, olen Rob, katsotaanpa kokeile tätä on koon.
Joten, käymme jälleen aloittaa pohjimmiltaan kopio copy.c, ja
tehdä muutamia muutoksia.
Huomaa heti näemme muutoksen, jossa sen sijaan tarkistaa, jos
argc ei yhtä 3, haluamme tarkistaa jos argc ei ole yhtä kuin 4, koska
Nyt emme vain ryhtyy infile ja outfile, mutta olemme myös ryhtyy
n, joka on summa, jonka olemme skaalaus alkuperäisen kuvan.
Kun olemme varmoja, että voimme vain muuntaa n on kokonaisluku skaalataan atoi.
>> Joten, nyt aiomme luoda jonkinlaista peitenimet, soita argv 2 infile, ja
argv 3 outfile, koska argv 2 ja argv 3 eivät juurikaan auta nimiä.
Nyt haluamme varmista n on rajoissa odotamme, niin
spec täsmennetään, että jos se on alle tai nolla, tai suurempi kuin 100,
niin se on virheellinen resize tekijä, ja meidän pitäisi varoittaa käyttäjää siitä.
>> Kun olemme yli kaiken, että voimme vihdoin avaamme infile, ja me tarvitsemme
virheille varmista, että avaaminen ei onnistu jostain syystä.
Meidän on myös avata outfile, ja jälleen virhe varmista, että
ei onnistu jostain syystä.
Mutta muista, jos avaaminen outfile epäonnistui että meidän täytyy sulkea
infile, joka oli jo avattu.
>> Niin, olettaen, että ei onnistu, niin Me olemme - aivan kuten copy.c--
aion lukea otsikkoon alkaen infile.
Aiomme varmistaa se voimassa bittikartta, mutta nyt aiomme tehdä joitakin
asioita hieman eri tavalla.
Joten ensimmäinen, aiomme haluavat Muistan alkuperäinen leveys ja korkeus
ja infile, koska aiomme muutamme sitä outfile.
Joten nyt muistaa, että kumman syystä bi.biheight, on negatiivinen, ja
joten todellinen korkeus, positiivinen, me halua ottaa itseisarvo.
>> Nyt, täyte tulee olemaan sama laskelma kuin se oli copy.c,
käyttämällä vanhaa leveys, ja nyt olemme todella aikoo muuttaa
Mitä meidän otsikossa.
Joten aiomme moninkertaistaa leveyttä n, koska olemme skaalaus leveys
n, kerrotaan korkeutta n, koska olemme skaalaus n, ja nyt meillä on
laskenta uusi pehmuste perustuu uusi leveys.
>> Joten nyt meidän täytyy muuttaa joitakin muilla aloilla meidän otsikossa.
Bi.biSizeImage on tarkoitus olla koko on kaikki tavua pikseliä
ja täyte kuvan.
Ja niin koko yhden rivin meidän kuva on koko RGB-kolminkertainen, koko
yhden pikselin, kertaa enemmän pikseliä peräkkäin, plus sisennysarvot
rivin päässä.
Ja sitten me aiomme kerrotaan, että itseisarvo pituutemme saada
tavujen kokonaismäärä kuvatiedoissa.
bf.bfSize on vain kokonaismäärä tavujen meidän kuvadatan, joten
bi.biSizeImage, plus koko meidän otsikot.
Joten, lisäämällä koosta bittikarttatiedoston header, ja koko bitmap info
header, OK.
Niin, että meidän tarvitsee muuttaa meidän otsikot.
Nyt me kirjoittaa bittikarttatiedoston otsikko meidän outfile, ja meidän bitmap tiedot
header meidän outfile, ja nyt olemme valmiita aloittamaan menossa
yli todellisen pikseliä.
>> Joten haluamme kerrata yli infile n pyyhkäisyjuovaa.
Joten haluamme kerrata yli oldheight.
Siksi meidän piti muistaa alkuperäinen korkeus, ennen kuin muutamme sitä
ja skaalata se n.
Nyt aiomme lukea yhden rivi infile osaksi
puskurin kokoa oldwidth.
Joten tässä, me freading koko RGB triple, yksi pikseli, ja vanhoja leveys
ne infile meidän puskuriin.
Ja se tulee olemaan koko rivi tässä array.
Joten nyt haluamme kerrata n kertaa tulosta tämä rivi meidän outfile n kertaa.
Ja niin sitähän tämä silmukka on tekemässä.
Tämä sisäinen silmukka iteroimalla yli soutaa itse yli array, tulostus
jokaisen pikselin array n kertaa.
Joten zeroth elementti tulostetaan n kertaa, ensimmäinen elementti on
painetut n kertaa.
Ja se on tavallaan, miten aiomme vaakasuoraan mittakaavassa outfile, ja
Tämän silmukan, koska olemme silmukoiden n kertaa, miten aiomme
vertikaalisesti mittakaavassa.
>> Tänne, näemme, että meidän täytyy lisätä padding lopussa kunkin rivin.
Siksi tämä on sisällä silmukan joka tulostaa n riviä vain
tämä krs infile.
Sitten tänne, aion ohittaa pehmuste infile, koska kerran
olemme tehneet yhden rivin infile, emme välitä
mikä täyte oli.
Haluamme vain päästä toiseen riviin.
Ja sitten me silmukka takaisin ja tehdä kaikki Tämän uudelleen toisessa rivissä.
>> Lopuksi, kun olemme tehneet kaiken sen kanssa, voimme sulkea infile lähellä
outfile, ja paluu 0, koska olemme tehneet.
>> Nimeni on Rob, ja tämä oli resize.
>> [Musiikki soi]