>> [MUSIC Playing]
>> ROB BOWDEN: Szia, én vagyok Rob, most próbáld ezt a méret.
Tehát ismét fog kezdeni alapvetően egy példányt a copy.c, és
hogy néhány változtatást.
Megjegyzés azonnal látunk változást, ahol a ahelyett, hogy ellenőrzi, hogy ha
argc nem egyenlő 3, szeretnénk ellenőrizni ha argc nem egyenlő 4, mivel
Most mi nem csak vesz egy infile és a kimeneti fájl, de mi is vesz a
n, ami az az összeg, hogy mi vagyunk méretezés az eredeti képet.
Ha nem vagyunk biztosak az, hogy mi csak konvertálni n egy egész szám segítségével atoi.
>> Szóval, most megyünk, hogy egyfajta álnevek, csak hívja argv 2 infile, és
argv 3 outfile, mert argv 2. és argv 3 nem túl segítőkész neveket.
Most azt szeretnénk, hogy győződjön meg róla, n határain belül arra számítunk, így a
spec kimondja, hogy ha ez kisebb vagy nullával egyenlő, vagy nagyobb, mint 100,
akkor ez érvénytelen átméretezés tényező, és meg kell figyelmeztetni a felhasználót, hogy a.
>> Ha túl vagyunk, ami azt is kinyissa a bemeneti fájl, és szükségünk van
a hiba győződjön meg arról, hogy a nyitás nem sikerül valamilyen okból.
Azt is meg kell nyitni a kimeneti fájl, és ismét hiba győződjön meg arról, hogy
nem mulasztotta valamilyen okból.
De biztos, hogy a megnyitón a outfile nem, hogy meg kell zárni
a bemeneti fájl, amelyet már megnyitott.
>> Tehát, feltételezve, hogy nem sikerül, akkor we're - akárcsak copy.c, -
majd olvasni a fejlécben a bemeneti fájl.
Megyünk, hogy megbizonyosodjon arról, hogy ez egy érvényes bitmap, de most fogunk némi
a dolgok egy kicsit másképp.
Tehát az első, mi szeretne majd emlékszem, az eredeti szélesség és magasság
A bemeneti fájl, mert fogunk változik, hogy a kimeneti fájl.
Tehát most ne feledje, hogy a furcsa okból bi.biheight, negatív, és
így a tényleges magasság, pozitív, akkor szeretné, hogy az abszolút érték.
>> Most, a padding lesz ugyanaz számítás mint volt copy.c,
a régi szélességét, és most vagyunk valóban meg fog változni
Mi van a fejlécben.
Így fogjuk szaporodnak a szélességet n, hiszen mi vagyunk méretezés a szélességet
n, szorozza meg a magasságot n, mert vagyunk méretezés n, és most már
A számítás új padding alapján az új szélességét.
>> Tehát most meg kell változtatni más területeken a fejlécben.
Bi.biSizeImage állítólag a mérete az összes bájt a képpontok
és padding a kép.
És így a méretét egyetlen sor a mi kép mérete RGB hármas, a méret
egy pixel, annyi pixel egy sorban, valamint a padding a
a végén a sorban.
És akkor mi lesz, hogy sokszorozza meg, hogy a abszolút értéke a magasság, hogy
a bájtok számát a képadatokat.
bf.bfSize csak az összes byte-ok a képadatok, így
bi.biSizeImage, valamint a mérete a fejlécet.
Tehát, hozzátéve, a mérete bitmap fájl fejléc, és méretét bitmap információkat
header, OK.
Szóval ez minden, amit kell, hogy változás a fejléc.
Most fogjuk írni a bitmap fájl fejlécében hogy a kimeneti fájl, és a mi bitmap információkat
header, hogy a kimeneti fájl, és most készen állunk, hogy kezdeni fog
mint a tényleges pixel.
>> Így akarunk végighaladni A bemeneti fájl szkennelési vonalak.
Tehát szeretnénk iterációkhoz oldheight.
Ezért szükséges, hogy emlékezzen a eredeti magasságát, mielőtt változtassa meg
és skálázott azt n.
Most fogunk olvasni egy sorban a bemeneti fájl egy
buffer méret oldwidth.
Tehát itt, mi freading mérete RGB hármas, egy pixel, és a régi szélessége
őket a bemeneti fájl a mi puffer.
És ez lesz az egész sor ebben a tömbben.
Tehát most, szeretnénk iterációkhoz n-szer, hogy nyomtassa ki ezt a sort a mi outfile n-szer.
És ez az, amit ez a hurkot csinál.
Ez a belső hurok iterációjával felett sorban is, mint a tömb, nyomtatás
minden egyes pixel a tömb n-szer.
Így a nulladik elem nyomtatása n-szer, az első elem, hogy
nyomtatott n-szer.
És ez a fajta, hogy hogyan fogunk vízszintes skála a kimeneti fájl, és
ez a hurok, hiszen mi vagyunk a ciklusok n alkalommal, hogy hogyan fogjuk
függőleges skálán.
>> Itt lent, azt látjuk, hogy mi kell hozzá a kitöltés végén minden sorban.
Ez az, amiért ez a for ciklus ami kinyomtatni a n sorok csak
ez az egy sort a bemeneti fájl.
Aztán itt, fogok kihagyni A padding a bemeneti fájl, mert ha
mi történik egy sort a infile, nem érdekel
amit a padding volt.
Csak azt akarjuk, hogy a második sorban.
És aztán visszafordul, és tegyenek meg mindent ez megint a második sorban.
>> Végül, miután végeztünk minden, tudjuk zárni a bemeneti fájl, szoros
A kimeneti fájl, és vissza 0, mert végeztünk.
>> A nevem Rob, és ez volt az átméretezés.
>> [MUSIC Playing]