[Musikgengivelse] ROB BOWDEN: Hej. Jeg er Rob og lad os størrelse op i dette problem. Så vi vil til at starte med copy.c som en skabelon, men vi kommer til at være gør en hel del ændringer. Nu ser vi, vi straks gøre en ændre, hvor vi ikke længere tjekker for vores RXC ikke lig 3, men nu Vi tjekker rc ikke er lig 4.. Da vi ønsker også at omfatte Foruden de i filen og filer ud argumenter, f som kommer til at være på denne faktor, som vi skalering. Så når vi er sikre på, at vi ønsker at bruge s scanning f konvertere strengen argv1 til en float. Og vi kommer til at gemme at faktor. Denne ekstra karakter er at sikre at vi rent faktisk ikke ind noget lignende 1,4 ABC på kommandolinjen. Nu skal vi til at skabe nogle aliaser da RV2 og RV3 ikke meget nyttige navne. Vi er i stedet kommer til at ringe dem i filen og ud fil. Nu skal vi sørge for, at vores faktor var faktisk gyldig. Så hvis faktor er mindre end eller lig med nul eller større end 100, så som pr spec, bør vi afvise denne faktor. Når vi er sikker på, det er godt, vi nu kan åbne n fil, og vi er nødt til at gøre sikker på, at det med succes blev åbnet. Hvis det ikke gjorde det, vil det returnere null. Vi kommer til at åbne ud-filen. Og igen, vi ønsker at tjekke for at sikker på det er med succes åbnet. Og hvis det ikke lykkedes at åbne, så vi også nødt til at være sikker på at lukke n fil, der oprindeligt blev succesfuldt åbnet, ellers har vi en hukommelsesfejl. Så nu vil vi læse i bitmap filens header og bitmap info header fra n fil. Vi kommer til at sørge for, at n fil var et gyldigt bitmap. OK. Så nu vil vi til at starte at lave nogle ændringer. Så fordi vi kommer til at være under forandring ting, vi først ønsker at huske gamle bredde n fil. Vi ønsker at huske det gamle polstring af n-filen ved hjælp af den samme beregning fra copy.c. Og nu vi kommer til at ændre bitmap info header. Og så vi multiplicere både bredden og højden af ​​faktor, da det er, hvad vi er skalering af. Vi kommer til at bestemme ny polstring af filen ved ved hjælp af den nye bredde. Og vi kommer til at bestemme den nye størrelsen på billedet ved hjælp af antallet af bytes i en enkelt række, som vil være antallet af pixels i den række gange størrelsen af ​​en pixel plus antal byte polstring ved udgangen af denne række, og multiplicere alle, med antallet af rækker, vi har. Så det er det antal bytes vi har i vores billeddata. Bf.Bfsize nu kommer til at være nummer bytes i vores image beta plus størrelsen af ​​vores overskrifter. Så plus størrelse på bitmap-fil header og størrelse af bitmap-info header. OK. Så det er det for vores overskrifter. Vi kan skrive filen hoved og info header til vores ud fil, og vi er gode. Nu er det tid til at starte faktisk skrive pixel data til ud-filen. Vi kommer til at erklære en buffer størrelse gamle bredde RGB tredobler, og vi er kommer til at erklære en variabel kaldet række følelsesløse, som er, at vi kommer til at indledningsvis sættes lig negativ 1. Vi vil se, at vi kommer til at bruge at for at holde styr på, hvad række vi i øjeblikket har indlæst i denne buffer. OK. Så nu i modsætning til den standard udgave, i stedet for iteration over på i fil, vi kommer til at gentage over hver række i ud-filen og finde ud hvilken række i in fil, vi ønsker at placere i denne række i ud-filen. Så iteration i alle rækker i ud fil ved hjælp af den nye højde, er vi først kommer til at bestemme rækken i den gamle fil vi kommer til at bruge, som vi er kommer til at gøre ved at tage denne aktuelle række divideret med faktor. Så det kommer til at give os rækken i den gamle fil, vi ønsker. Så nu, hvis rækken følelsesløs ikke lige gamle y, vi er nødt til at læse rækken at vi ønsker i vores nuværende rækken buffer. Så hvordan skal vi gøre det? Først, vi kommer til at finde ud af position, der begynder at række i originale fil. Så denne stilling bliver forbi alle vores overskrifter og nu forbi gamle y rækker. Og så hvor mange bytes er i en enkelt række? Igen, størrelsen af ​​RGB tredobbelt gange gammel bredde plus gamle polstring, så det er antal bytes i en enkelt række. Og vi ønsker at springe forbi gamle y rækker. Så vi kommer til at f søge, og vi er bruge søge indstillet til at starte fra begyndelsen af ​​en fil. Vi kommer til at f søge at denne position i filen, sætte os på starten af ​​rækken, vi ønsker at læse i vores buffer. Vi kommer til at sætte række følelsesløs svarende til gamle y. Så nu, hvis vi loop tilbage, og vi ønsker at bruge den samme række i vores ud-fil, så vi kommer ikke til at læse det i igen unødigt. Så virkelig, række følelsesløs er blot en optimering. Endelig vil vi læse i aktuelle række gamle bredde RGB tredobler at vi ønsker fra den oprindelige fil. Så nu cur række indeholder pixels fra den originale fil, vi ønsker at skrive ind i ud-fil. Så nu, ligesom ovenfor, i stedet for iteration over den gamle fil, vi har brug for det til at gentage over de nye filer rækker. Nå her, i stedet for iteration over alle af de gamle pixels, der i nuværende række, vi ønsker at gentage over alle pixels i vores nye fil i denne bestemt række. Hvorfor ønsker vi at gøre det? Fordi vi ser her, at vi ikke faktisk nødvendigvis at bruge alle de pixels i den oprindelige fil. Fordi hvis vi skrumper, vi måske faktisk ønsker at springe pixels. Og vi ser, at det - x divideret med faktor - nøje afspejler op her, hvor vi siger y divideret med faktor at regne ud, at den gamle y-te række svarer til y-te række i den nye fil. Nu skal vi til at skrive alle disse pixels fra den gamle række ind i vores nye række. Når vi har gjort det, er vi nødt til bare sætte polstring i slutningen af ​​vores rækken og vi vil løkke tilbage og fortsætte alle rækkerne i vores nye fil. I slutningen, er vi nødt til at lukke vores gamle fil, skal du lukke vores nye fil, og tilbagevenden nul, fordi alt gik fint. Mit navn er Rob og dette var Recess. [Musikgengivelse]