1 00:00:00,000 --> 00:00:12,240 >> [MUSIC PŘEHRÁVÁNÍ] 2 00:00:12,240 --> 00:00:15,870 >> ROB Bowden: Ahoj, já jsem Rob, pojďme zkuste to kvůli velikosti. 3 00:00:15,870 --> 00:00:21,100 Takže jsme se opět začnou s v podstatě kopie copy.c, a 4 00:00:21,100 --> 00:00:22,860 provést několik změn. 5 00:00:22,860 --> 00:00:26,280 Poznámka okamžitě vidíme změny, kde místo kontroly, zda 6 00:00:26,280 --> 00:00:30,440 argc není rovno 3, chceme zkontrolovat pokud argc není rovno 4, protože 7 00:00:30,440 --> 00:00:34,350 Nyní jsme nejen brát v INFILE a outfile, ale my jsme také přičemž v 8 00:00:34,350 --> 00:00:38,980 n, což je částka, kterou jsme měřítko původní obraz. 9 00:00:38,980 --> 00:00:44,340 Poté, co jsme si jisti, že můžeme jen převést n na integer pomocí atoi. 10 00:00:44,340 --> 00:00:48,760 >> Tak, teď budeme vytvářet nějaké přezdívky, stačí zavolat argv 2 INFILE, a 11 00:00:48,760 --> 00:00:54,240 argv 3 outfile, protože argv 2 a argv 3 nemůže velmi užitečné jména. 12 00:00:54,240 --> 00:00:58,510 Nyní chceme, aby zkontrolujte, zda n je v mezích očekáváme, takže 13 00:00:58,510 --> 00:01:02,910 spec uvádí, že v případě, že je menší než nebo se rovná nule, nebo větší než 100, 14 00:01:02,910 --> 00:01:08,580 pak je to neplatné resize faktor, a měli bychom varovat uživatele, že. 15 00:01:08,580 --> 00:01:13,090 >> Poté, co jsme za všechno, můžeme konečně otevřít naše soubor_se_hrou, a my potřebujeme 16 00:01:13,090 --> 00:01:16,270 chyby zkontrolovat, aby se ujistil, že otevření nezklamal z nějakého důvodu. 17 00:01:16,270 --> 00:01:19,860 Musíme také otevřít naše outfile, a opět chyba zkontrolovat, aby se ujistil, že 18 00:01:19,860 --> 00:01:21,250 neselhal z nějakého důvodu. 19 00:01:21,250 --> 00:01:26,270 Ale být jisti, zda otevření outfile nedokázal, že musíme zavřít 20 00:01:26,270 --> 00:01:29,040 infile, která již byla otevřena. 21 00:01:29,040 --> 00:01:33,690 >> Takže, za předpokladu, že neselhal, pak Jsme - stejně jako v copy.c-- 22 00:01:33,690 --> 00:01:36,140 bude číst v záhlaví od infile. 23 00:01:36,140 --> 00:01:40,130 Chystáme se ujistil, že to platí bitmap, ale teď budeme dělat nějaké 24 00:01:40,130 --> 00:01:41,620 věci trochu jinak. 25 00:01:41,620 --> 00:01:44,870 Tak za prvé, budeme chtít, aby vzpomenout na původní šířku a výšku 26 00:01:44,870 --> 00:01:48,290 ze vstupni soubor, protože budeme se mění jej na outFile. 27 00:01:48,290 --> 00:01:53,890 Takže teď si uvědomit, že za podivných důvodů bi.biheight, je negativní, a 28 00:01:53,890 --> 00:01:58,670 takže skutečná výška, v pozitivní, se Chcete mít absolutní hodnotu. 29 00:01:58,670 --> 00:02:02,580 >> Nyní, výplň bude stejný výpočet, jak to bylo v copy.c, 30 00:02:02,580 --> 00:02:06,060 používat staré šířku, a teď jsme ve skutečnosti se změní 31 00:02:06,060 --> 00:02:07,320 to, co je v našem záhlaví. 32 00:02:07,320 --> 00:02:11,200 Takže budeme násobit naše šířku podle n, protože jsme škálování šířku podle 33 00:02:11,200 --> 00:02:15,100 n, vynásobte výšku n, protože jsme škálování podle n, a teď máme 34 00:02:15,100 --> 00:02:19,250 výpočet pro novou výplň vztaženo na novou šířku. 35 00:02:19,250 --> 00:02:21,840 >> Takže teď musíme změnit některé Všechny ostatní položky v našem záhlaví. 36 00:02:21,840 --> 00:02:26,890 Bi.biSizeImage má být Velikost všech bytů v pixelech 37 00:02:26,890 --> 00:02:28,520 a polstrování z obrázku. 38 00:02:28,520 --> 00:02:34,190 A tak velikost jednoho řádku naší obrázek je velikost RGB trojnásobný, velikost 39 00:02:34,190 --> 00:02:39,430 jediného pixelu, krát počet pixelů v řadě, plus polstrování na 40 00:02:39,430 --> 00:02:40,910 konec řádku. 41 00:02:40,910 --> 00:02:45,200 A pak budeme násobit, že absolutní hodnota naší výšky dostat 42 00:02:45,200 --> 00:02:48,350 celkový počet bajtů v obrazových datech. 43 00:02:48,350 --> 00:02:53,050 bf.bfSize je pouze celkový počet z bytů v našich obrazových dat, takže 44 00:02:53,050 --> 00:02:56,530 bi.biSizeImage, plus Velikost našich hlaviček. 45 00:02:56,530 --> 00:02:59,850 Takže s tím, na velikosti bitmapového souboru záhlaví a velikost bitmapy informací 46 00:02:59,850 --> 00:03:00,800 záhlaví, OK. 47 00:03:00,800 --> 00:03:03,170 Tak to je vše, co potřebujeme Změna v našich hlavičkách. 48 00:03:03,170 --> 00:03:07,020 Teď budeme psát záhlaví bitmap souboru naší outFile, a naše bitmapové informace 49 00:03:07,020 --> 00:03:09,880 header naší outFile, a teď Jsme připraveni začít chodit 50 00:03:09,880 --> 00:03:11,990 na skutečných pixelů. 51 00:03:11,990 --> 00:03:15,720 >> Takže chceme iteraci sejmutí na vstupni soubor je. 52 00:03:15,720 --> 00:03:17,730 Takže chceme iterovat přes oldheight. 53 00:03:17,730 --> 00:03:20,830 To je důvod, proč jsme potřebovali mít na paměti, původní výšky, než jsme to změnit 54 00:03:20,830 --> 00:03:23,040 a zmenšen ji n. 55 00:03:23,040 --> 00:03:27,810 Teď budeme číst jeden řádek INFILE do 56 00:03:27,810 --> 00:03:30,630 vyrovnávací paměť o velikosti oldwidth. 57 00:03:30,630 --> 00:03:36,190 Tak tady jsme freading velikost RGB třílůžkový, jeden pixel, a starý šířka 58 00:03:36,190 --> 00:03:39,760 je z INFILE do naší 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 teď, chceme iterovat n časy vytisknout tento řádek do naší outFile n krát. 61 00:03:50,390 --> 00:03:52,510 A tak to je to, co tato smyčka se dělá. 62 00:03:52,510 --> 00:03:57,910 Tato vnitřní smyčky iterace ř. sám, přes pole, tisk 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ý prvek je vytištěna n krát, první prvek je 65 00:04:04,510 --> 00:04:05,660 tištěný n-krát. 66 00:04:05,660 --> 00:04:10,820 A to je trochu o tom, jak budeme vodorovně škálovat v outFile, a 67 00:04:10,820 --> 00:04:13,390 tato smyčka, protože jsme opakování n krát, je to, jak budeme 68 00:04:13,390 --> 00:04:15,580 vertikálně stupnice. 69 00:04:15,580 --> 00:04:19,850 >> Tady dole vidíme, že musíme přidat polstrování na konci každého řádku. 70 00:04:19,850 --> 00:04:25,050 To je důvod, proč je to uvnitř pro smyčku že je vytisknout na n řádků jen 71 00:04:25,050 --> 00:04:28,400 tento jeden řádek z INFILE. 72 00:04:28,400 --> 00:04:32,150 Pak tady dole, budu přeskočit polstrování v INFILE, protože jakmile 73 00:04:32,150 --> 00:04:34,560 jsme hotovi s jednou řadou infile, my se nestaráme o 74 00:04:34,560 --> 00:04:35,290 co polstrování bylo. 75 00:04:35,290 --> 00:04:37,110 Chceme jen, aby se na druhém řádku. 76 00:04:37,110 --> 00:04:40,870 A pak budeme přecházet zpět a udělat vše, To opět na druhém řádku. 77 00:04:40,870 --> 00:04:44,406 >> Nakonec, když jsme hotovi s tím vším, můžeme uzavřít soubor_se_hrou, v blízkosti 78 00:04:44,406 --> 00:04:47,430 outfile, a návrat 0, protože jsme hotovi. 79 00:04:47,430 --> 00:04:50,330 >> Jmenuji se Rob, a to resize. 80 00:04:50,330 --> 00:04:54,934 >> [MUSIC PŘEHRÁVÁNÍ]