1 00:00:00,000 --> 00:00:12,240 >> [MUSIC PLAYBACK] 2 00:00:12,240 --> 00:00:15,870 >> ROB Bowden: Ahoj, ja som Rob, poďme skúste to kvôli veľkosti. 3 00:00:15,870 --> 00:00:21,100 Takže sme sa opäť začnú s v podstate kópia copy.c, a 4 00:00:21,100 --> 00:00:22,860 vykonať niekoľko zmien. 5 00:00:22,860 --> 00:00:26,280 Poznámka okamžite vidíme zmeny, kde miesto kontroly, či 6 00:00:26,280 --> 00:00:30,440 argc nie je rovné 3, chceme skontrolovať ak argc nie je rovné 4, pretože 7 00:00:30,440 --> 00:00:34,350 Teraz sme nielen brať v Infil a outfile, ale my sme tiež pričom v 8 00:00:34,350 --> 00:00:38,980 n, čo je suma, ktorú sme mierka pôvodný obraz. 9 00:00:38,980 --> 00:00:44,340 Potom, čo sme si istí, že môžeme len previesť n na integer pomocou atoi. 10 00:00:44,340 --> 00:00:48,760 >> Tak, teraz budeme vytvárať nejaké prezývky, stačí zavolať argv 2 Infil, a 11 00:00:48,760 --> 00:00:54,240 argv 3 outfile, pretože argv 2 a argv 3 nemôže veľmi užitočné mená. 12 00:00:54,240 --> 00:00:58,510 Teraz chceme, aby skontrolujte, či n je v medziach očakávame, takže 13 00:00:58,510 --> 00:01:02,910 spec uvádza, že v prípade, že je menší ako alebo sa rovná nule, alebo väčšia ako 100, 14 00:01:02,910 --> 00:01:08,580 potom je to neplatné resize faktor, a mali by sme varovať používateľov, že. 15 00:01:08,580 --> 00:01:13,090 >> Potom, čo sme za všetko, môžeme konečne otvoriť naše uložená_hra, a my potrebujeme 16 00:01:13,090 --> 00:01:16,270 chyby skontrolovať, aby sa ubezpečil, že otvorenie nesklamal z nejakého dôvodu. 17 00:01:16,270 --> 00:01:19,860 Musíme tiež otvoriť naše outfile, a opäť chyba skontrolovať, aby sa ubezpečil, že 18 00:01:19,860 --> 00:01:21,250 nezlyhal z nejakého dôvodu. 19 00:01:21,250 --> 00:01:26,270 Ale byť istí, či otvorenie outfile nedokázal, že musíme zatvoriť 20 00:01:26,270 --> 00:01:29,040 Infil, ktorá už bola otvorená. 21 00:01:29,040 --> 00:01:33,690 >> Takže, za predpokladu, že nezlyhal, potom Sme - rovnako ako v copy.c-- 22 00:01:33,690 --> 00:01:36,140 bude čítať v záhlaví od Infil. 23 00:01:36,140 --> 00:01:40,130 Chystáme sa uistil, že to platí bitmap, ale teraz budeme robiť nejaké 24 00:01:40,130 --> 00:01:41,620 veci trochu inak. 25 00:01:41,620 --> 00:01:44,870 Tak za prvé, budeme chcieť, aby spomenúť na pôvodnú šírku a výšku 26 00:01:44,870 --> 00:01:48,290 zo vstupný súbor, pretože budeme sa mení ho na outFile. 27 00:01:48,290 --> 00:01:53,890 Takže teraz si uvedomiť, že za podivných dôvodov bi.biheight, je negatívny, a 28 00:01:53,890 --> 00:01:58,670 takže skutočná výška, v pozitívne, sa Chcete mať absolútnu hodnotu. 29 00:01:58,670 --> 00:02:02,580 >> Teraz, výplň bude rovnaký výpočet, ako to bolo v copy.c, 30 00:02:02,580 --> 00:02:06,060 používať staré šírku, a teraz sme v skutočnosti sa zmení 31 00:02:06,060 --> 00:02:07,320 to, čo je v našom záhlaví. 32 00:02:07,320 --> 00:02:11,200 Takže budeme násobiť naše šírku podľa n, pretože sme škálovanie šírku podľa 33 00:02:11,200 --> 00:02:15,100 n, vynásobte výšku n, pretože sme škálovanie podľa n, a teraz máme 34 00:02:15,100 --> 00:02:19,250 výpočet pre novú výplň vztiahnuté na novú šírku. 35 00:02:19,250 --> 00:02:21,840 >> Takže teraz musíme zmeniť niektoré Všetky ostatné položky v našom záhlaví. 36 00:02:21,840 --> 00:02:26,890 Bi.biSizeImage má byť Veľkosť všetkých bytov v pixeloch 37 00:02:26,890 --> 00:02:28,520 a polstrovanie z obrázku. 38 00:02:28,520 --> 00:02:34,190 A tak veľkosť jedného riadku našej obrázok je veľkosť RGB trojnásobný, veľkosť 39 00:02:34,190 --> 00:02:39,430 jediného pixelu, krát počet pixelov v rade, plus polstrovanie na 40 00:02:39,430 --> 00:02:40,910 koniec riadku. 41 00:02:40,910 --> 00:02:45,200 A potom budeme násobiť, že absolútna hodnota našej výšky dostať 42 00:02:45,200 --> 00:02:48,350 celkový počet bajtov v obrazových dátach. 43 00:02:48,350 --> 00:02:53,050 bf.bfSize je len celkový počet z bytov v našich obrazových dát, takže 44 00:02:53,050 --> 00:02:56,530 bi.biSizeImage, plus Veľkosť našich hlavičiek. 45 00:02:56,530 --> 00:02:59,850 Takže s tým, na veľkosti súboru bitovej mapy hlavičky a veľkosť bitmapy informácií 46 00:02:59,850 --> 00:03:00,800 záhlavie, OK. 47 00:03:00,800 --> 00:03:03,170 Tak to je všetko, čo potrebujeme Zmena v našich hlavičkách. 48 00:03:03,170 --> 00:03:07,020 Teraz budeme písať hlavičku bitmap súboru našej outFile, a naše bitmapové informácie 49 00:03:07,020 --> 00:03:09,880 header našej outFile, a teraz Sme pripravení začať chodiť 50 00:03:09,880 --> 00:03:11,990 na skutočných pixelov. 51 00:03:11,990 --> 00:03:15,720 >> Takže chceme iterácii sňatí na vstupný súbor je. 52 00:03:15,720 --> 00:03:17,730 Takže chceme iterovat cez oldheight. 53 00:03:17,730 --> 00:03:20,830 To je dôvod, prečo sme potrebovali mať na pamäti, pôvodnej výšky, než sme to zmeniť 54 00:03:20,830 --> 00:03:23,040 a zmenšený ju n 55 00:03:23,040 --> 00:03:27,810 Teraz budeme čítať jeden riadok Infil do 56 00:03:27,810 --> 00:03:30,630 vyrovnávaciu pamäť o veľkosti oldwidth. 57 00:03:30,630 --> 00:03:36,190 Tak tu sme freading veľkosť RGB trojlôžková, jeden pixel, a starý šírka 58 00:03:36,190 --> 00:03:39,760 je z Infil do našej pamäti. 59 00:03:39,760 --> 00:03:43,480 A že to bude celý ř v tomto poli. 60 00:03:43,480 --> 00:03:50,390 Takže teraz, chceme iterovat n časy vytlačiť tento riadok do našej outFile n krát. 61 00:03:50,390 --> 00:03:52,510 A tak to je to, čo táto slučka sa robí. 62 00:03:52,510 --> 00:03:57,910 Táto vnútorná slučky iterácie ř sám, cez pole, tlač 63 00:03:57,910 --> 00:04:00,710 Každý pixel v poli n krát. 64 00:04:00,710 --> 00:04:04,510 Takže nultý prvok je vytlačená n krát, prvý prvok je 65 00:04:04,510 --> 00:04:05,660 tlačený n-krát. 66 00:04:05,660 --> 00:04:10,820 A to je trochu o tom, ako budeme vodorovne škálovať v outFile, a 67 00:04:10,820 --> 00:04:13,390 táto slučka, pretože sme opakovanie n krát, je to, ako budeme 68 00:04:13,390 --> 00:04:15,580 vertikálne stupnice. 69 00:04:15,580 --> 00:04:19,850 >> Tu dole vidíme, že musíme pridať polstrovanie na konci každého riadku. 70 00:04:19,850 --> 00:04:25,050 To je dôvod, prečo je to vo vnútri pre slučku že ich vytlačiť na n riadkov len 71 00:04:25,050 --> 00:04:28,400 tento jeden riadok z Infil. 72 00:04:28,400 --> 00:04:32,150 Potom tu dole, budem preskočiť polstrovanie v Infil, pretože akonáhle 73 00:04:32,150 --> 00:04:34,560 sme hotoví s jedným radom Infil, my sa nestaráme o 74 00:04:34,560 --> 00:04:35,290 čo polstrovanie bolo. 75 00:04:35,290 --> 00:04:37,110 Chceme len, aby sa na druhom riadku. 76 00:04:37,110 --> 00:04:40,870 A potom budeme prechádzať späť a urobiť všetko, To opäť na druhom riadku. 77 00:04:40,870 --> 00:04:44,406 >> Nakoniec, keď sme hotoví s tým všetkým, môžeme uzavrieť uložená_hra, v blízkosti 78 00:04:44,406 --> 00:04:47,430 outfile, a návrat 0, pretože sme hotoví. 79 00:04:47,430 --> 00:04:50,330 >> Volám sa Rob, a to resize. 80 00:04:50,330 --> 00:04:54,934 >> [MUSIC PLAYBACK]