[Musikgengivelse] ROB BOWDEN: Hej, jeg er Rob, lad os prøv denne på for størrelse. Så vi igen kommer til at starte med dybest set en kopi af copy.c, og foretage nogle få ændringer. Bemærk straks ser vi en forandring, hvor i stedet for at kontrollere, om argc ikke lige 3, vi ønsker at kontrollere hvis argc ikke lig 4, eftersom nu er vi ikke bare tage i en infile og outfile, men vi også tage i n, hvilket er det beløb, som vi skalering originalbilledet. Når vi er sikker på, at vi bare kan konvertere n til et heltal ved hjælp atoi. Så nu vil vi skabe nogle aliaser, bare kalde argv 2 infile, og argv 3 outfile, fordi argv 2 og argv 3 er ikke meget nyttige navne. Nu ønsker vi at tjekke for at sikre n er inden for grænserne, vi forventer, så spec specificerer at hvis det er mindre end eller lig med nul, eller større end 100, så er et ugyldigt resize faktor, og vi bør advare brugeren af ​​det. Når vi er ud over alt det, vi kan endelig åbner vores infile, og vi har brug for til fejl tjekke for at sikre, at den åbning ikke svigte eller anden grund. Vi er også nødt til at åbne vores outfile, og igen fejl skal du kontrollere, at svigtede ikke en eller anden grund. Men vær sikker på, om åbningen af ​​den outfile mislykkedes at vi er nødt til at lukke den infile, som allerede blev åbnet. Så under forudsætning af, der ikke svigter, så vi er klar - ligesom i copy.c-- kommer til at læse i overskriften fra infile. Vi kommer til at sørge for det er et gyldigt bitmap, men nu vil vi gøre nogle tingene lidt anderledes. Så det første, vi kommer til at ønsker at huske den oprindelige bredde og højde af infile, fordi vi kommer til at være at ændre det for outfile. Så nu huske, at for mærkelige grunde bi.biheight, er negativ, og så den faktiske højde, positiv, vi ønsker at tage den absolutte værdi. Nu er polstring vil være den samme beregning, som det var i copy.c, ved hjælp af den gamle bredde, og nu er vi faktisk kommer til at ændre Hvad er der i vores header. Så vi kommer til at formere vores bredde af n, da vi skalere bredden med n, multipliceres højden med n, da vi er skalering af n, og nu har vi beregningen for en ny polstring baseret på den nye bredde. Så nu er vi nødt til at ændre nogle andre felter i vores hovedstød. Bi.biSizeImage formodes at være den størrelsen på alle bytes i pixels og polstring af billedet. Og så størrelsen af ​​en enkelt række af vores Billedet størrelse RGB tredobbelt, størrelse en enkelt pixel, gange antallet af pixels i træk, plus polstring på enden af ​​rækken. Og så vil vi formere sig, at ved absolutte værdi af vores højde for at få det samlede antal bytes i billeddata. bf.bfSize er bare det samlede antal bytes i vores billeddata, så bi.biSizeImage, plus størrelsen af ​​vores overskrifter. Så tilsætning af størrelsen på bitmap-fil header, og størrelsen af ​​bitmap-info header, OK. Så det er alt vi behøver at ændre i vores overskrifter. Nu skriver vi den bitmap-fil header til vores outfile, og vores bitmap info header til vores outfile, og nu vi er klar til at begynde at gå over den aktuelle pixel. Så vi ønsker at gentage over den INFILE s skanderingslinjer. Så vi ønsker at gentage over oldheight. Det er derfor, vi har brug for at huske oprindelige højde, før vi ændrer det og skaleres det med n. Nu vil vi læse en enkelt række i infile i en buffer størrelse oldwidth. Så her er vi freading størrelse RGB tredobbelt, en pixel, og gamle bredde dem fra infile i vores buffer. Og det kommer til at være en hel række i dette array. Så nu ønsker vi at gentage n gange til udskrive denne rækken til vores outfile n gange. Og så er det, denne løkke gør. Denne indre løkke iteration over ro sig over array, trykning hver pixel i arrayet n gange. Så den nulte element udskrives n gange, er det første element er trykt n gange. Og der er en slags hvordan vi kommer til at vandret skala i outfile, og denne løkke, da vi looping n tider, er, hvordan vi kommer til at lodret skala. Hernede ser vi at vi er nødt til at tilføje polstringen ved slutningen af ​​hver række. Det er derfor, det er inde i for-løkken der er at udskrive de n rækker af bare denne ene række fra infile. Derefter ned her, vil jeg springe over polstringen i infile, da en gang vi er færdige med en række af de infile, behøver vi ikke bekymre sig om hvad polstringen var. Vi ønsker blot at komme til den anden række. Og så vil vi løkke tilbage og gøre alt dette igen for den anden række. Endelig, når vi er færdig med alt det, vi kan lukke infile tæt den outfile og afkast 0 fordi vi er færdige. Mit navn er Rob, og dette var resize. [Musikgengivelse]