1 00:00:00,000 --> 00:00:12,240 >> [MUSIC Playing] 2 00:00:12,240 --> 00:00:15,870 >> ROB BOWDEN: Szia, én vagyok Rob, most próbáld ezt a méret. 3 00:00:15,870 --> 00:00:21,100 Tehát ismét fog kezdeni alapvetően egy példányt a copy.c, és 4 00:00:21,100 --> 00:00:22,860 hogy néhány változtatást. 5 00:00:22,860 --> 00:00:26,280 Megjegyzés azonnal látunk változást, ahol a ahelyett, hogy ellenőrzi, hogy ha 6 00:00:26,280 --> 00:00:30,440 argc nem egyenlő 3, szeretnénk ellenőrizni ha argc nem egyenlő 4, mivel 7 00:00:30,440 --> 00:00:34,350 Most mi nem csak vesz egy infile és a kimeneti fájl, de mi is vesz a 8 00:00:34,350 --> 00:00:38,980 n, ami az az összeg, hogy mi vagyunk méretezés az eredeti képet. 9 00:00:38,980 --> 00:00:44,340 Ha nem vagyunk biztosak az, hogy mi csak konvertálni n egy egész szám segítségével atoi. 10 00:00:44,340 --> 00:00:48,760 >> Szóval, most megyünk, hogy egyfajta álnevek, csak hívja argv 2 infile, és 11 00:00:48,760 --> 00:00:54,240 argv 3 outfile, mert argv 2. és argv 3 nem túl segítőkész neveket. 12 00:00:54,240 --> 00:00:58,510 Most azt szeretnénk, hogy győződjön meg róla, n határain belül arra számítunk, így a 13 00:00:58,510 --> 00:01:02,910 spec kimondja, hogy ha ez kisebb vagy nullával egyenlő, vagy nagyobb, mint 100, 14 00:01:02,910 --> 00:01:08,580 akkor ez érvénytelen átméretezés tényező, és meg kell figyelmeztetni a felhasználót, hogy a. 15 00:01:08,580 --> 00:01:13,090 >> Ha túl vagyunk, ami azt is kinyissa a bemeneti fájl, és szükségünk van 16 00:01:13,090 --> 00:01:16,270 a hiba győződjön meg arról, hogy a nyitás nem sikerül valamilyen okból. 17 00:01:16,270 --> 00:01:19,860 Azt is meg kell nyitni a kimeneti fájl, és ismét hiba győződjön meg arról, hogy 18 00:01:19,860 --> 00:01:21,250 nem mulasztotta valamilyen okból. 19 00:01:21,250 --> 00:01:26,270 De biztos, hogy a megnyitón a outfile nem, hogy meg kell zárni 20 00:01:26,270 --> 00:01:29,040 a bemeneti fájl, amelyet már megnyitott. 21 00:01:29,040 --> 00:01:33,690 >> Tehát, feltételezve, hogy nem sikerül, akkor we're - akárcsak copy.c, - 22 00:01:33,690 --> 00:01:36,140 majd olvasni a fejlécben a bemeneti fájl. 23 00:01:36,140 --> 00:01:40,130 Megyünk, hogy megbizonyosodjon arról, hogy ez egy érvényes bitmap, de most fogunk némi 24 00:01:40,130 --> 00:01:41,620 a dolgok egy kicsit másképp. 25 00:01:41,620 --> 00:01:44,870 Tehát az első, mi szeretne majd emlékszem, az eredeti szélesség és magasság 26 00:01:44,870 --> 00:01:48,290 A bemeneti fájl, mert fogunk változik, hogy a kimeneti fájl. 27 00:01:48,290 --> 00:01:53,890 Tehát most ne feledje, hogy a furcsa okból bi.biheight, negatív, és 28 00:01:53,890 --> 00:01:58,670 így a tényleges magasság, pozitív, akkor szeretné, hogy az abszolút érték. 29 00:01:58,670 --> 00:02:02,580 >> Most, a padding lesz ugyanaz számítás mint volt copy.c, 30 00:02:02,580 --> 00:02:06,060 a régi szélességét, és most vagyunk valóban meg fog változni 31 00:02:06,060 --> 00:02:07,320 Mi van a fejlécben. 32 00:02:07,320 --> 00:02:11,200 Így fogjuk szaporodnak a szélességet n, hiszen mi vagyunk méretezés a szélességet 33 00:02:11,200 --> 00:02:15,100 n, szorozza meg a magasságot n, mert vagyunk méretezés n, és most már 34 00:02:15,100 --> 00:02:19,250 A számítás új padding alapján az új szélességét. 35 00:02:19,250 --> 00:02:21,840 >> Tehát most meg kell változtatni más területeken a fejlécben. 36 00:02:21,840 --> 00:02:26,890 Bi.biSizeImage állítólag a mérete az összes bájt a képpontok 37 00:02:26,890 --> 00:02:28,520 és padding a kép. 38 00:02:28,520 --> 00:02:34,190 És így a méretét egyetlen sor a mi kép mérete RGB hármas, a méret 39 00:02:34,190 --> 00:02:39,430 egy pixel, annyi pixel egy sorban, valamint a padding a 40 00:02:39,430 --> 00:02:40,910 a végén a sorban. 41 00:02:40,910 --> 00:02:45,200 És akkor mi lesz, hogy sokszorozza meg, hogy a abszolút értéke a magasság, hogy 42 00:02:45,200 --> 00:02:48,350 a bájtok számát a képadatokat. 43 00:02:48,350 --> 00:02:53,050 bf.bfSize csak az összes byte-ok a képadatok, így 44 00:02:53,050 --> 00:02:56,530 bi.biSizeImage, valamint a mérete a fejlécet. 45 00:02:56,530 --> 00:02:59,850 Tehát, hozzátéve, a mérete bitmap fájl fejléc, és méretét bitmap információkat 46 00:02:59,850 --> 00:03:00,800 header, OK. 47 00:03:00,800 --> 00:03:03,170 Szóval ez minden, amit kell, hogy változás a fejléc. 48 00:03:03,170 --> 00:03:07,020 Most fogjuk írni a bitmap fájl fejlécében hogy a kimeneti fájl, és a mi bitmap információkat 49 00:03:07,020 --> 00:03:09,880 header, hogy a kimeneti fájl, és most készen állunk, hogy kezdeni fog 50 00:03:09,880 --> 00:03:11,990 mint a tényleges pixel. 51 00:03:11,990 --> 00:03:15,720 >> Így akarunk végighaladni A bemeneti fájl szkennelési vonalak. 52 00:03:15,720 --> 00:03:17,730 Tehát szeretnénk iterációkhoz oldheight. 53 00:03:17,730 --> 00:03:20,830 Ezért szükséges, hogy emlékezzen a eredeti magasságát, mielőtt változtassa meg 54 00:03:20,830 --> 00:03:23,040 és skálázott azt n. 55 00:03:23,040 --> 00:03:27,810 Most fogunk olvasni egy sorban a bemeneti fájl egy 56 00:03:27,810 --> 00:03:30,630 buffer méret oldwidth. 57 00:03:30,630 --> 00:03:36,190 Tehát itt, mi freading mérete RGB hármas, egy pixel, és a régi szélessége 58 00:03:36,190 --> 00:03:39,760 őket a bemeneti fájl a mi puffer. 59 00:03:39,760 --> 00:03:43,480 És ez lesz az egész sor ebben a tömbben. 60 00:03:43,480 --> 00:03:50,390 Tehát most, szeretnénk iterációkhoz n-szer, hogy nyomtassa ki ezt a sort a mi outfile n-szer. 61 00:03:50,390 --> 00:03:52,510 És ez az, amit ez a hurkot csinál. 62 00:03:52,510 --> 00:03:57,910 Ez a belső hurok iterációjával felett sorban is, mint a tömb, nyomtatás 63 00:03:57,910 --> 00:04:00,710 minden egyes pixel a tömb n-szer. 64 00:04:00,710 --> 00:04:04,510 Így a nulladik elem nyomtatása n-szer, az első elem, hogy 65 00:04:04,510 --> 00:04:05,660 nyomtatott n-szer. 66 00:04:05,660 --> 00:04:10,820 És ez a fajta, hogy hogyan fogunk vízszintes skála a kimeneti fájl, és 67 00:04:10,820 --> 00:04:13,390 ez a hurok, hiszen mi vagyunk a ciklusok n alkalommal, hogy hogyan fogjuk 68 00:04:13,390 --> 00:04:15,580 függőleges skálán. 69 00:04:15,580 --> 00:04:19,850 >> Itt lent, azt látjuk, hogy mi kell hozzá a kitöltés végén minden sorban. 70 00:04:19,850 --> 00:04:25,050 Ez az, amiért ez a for ciklus ami kinyomtatni a n sorok csak 71 00:04:25,050 --> 00:04:28,400 ez az egy sort a bemeneti fájl. 72 00:04:28,400 --> 00:04:32,150 Aztán itt, fogok kihagyni A padding a bemeneti fájl, mert ha 73 00:04:32,150 --> 00:04:34,560 mi történik egy sort a infile, nem érdekel 74 00:04:34,560 --> 00:04:35,290 amit a padding volt. 75 00:04:35,290 --> 00:04:37,110 Csak azt akarjuk, hogy a második sorban. 76 00:04:37,110 --> 00:04:40,870 És aztán visszafordul, és tegyenek meg mindent ez megint a második sorban. 77 00:04:40,870 --> 00:04:44,406 >> Végül, miután végeztünk minden, tudjuk zárni a bemeneti fájl, szoros 78 00:04:44,406 --> 00:04:47,430 A kimeneti fájl, és vissza 0, mert végeztünk. 79 00:04:47,430 --> 00:04:50,330 >> A nevem Rob, és ez volt az átméretezés. 80 00:04:50,330 --> 00:04:54,934 >> [MUSIC Playing]