1 00:00:00,000 --> 00:00:00,996 2 00:00:00,996 --> 00:00:12,470 >> [MUSIC PŘEHRÁVÁNÍ] 3 00:00:12,470 --> 00:00:13,210 >> ROB BOWDEN: Ahoj. 4 00:00:13,210 --> 00:00:16,870 Jsem Rob a pojďme velikost do tohoto problému. 5 00:00:16,870 --> 00:00:20,990 Takže jdeme na začátek copy.c jako šablona, ​​ale budeme mít 6 00:00:20,990 --> 00:00:23,340 Díky poměrně málo změn. 7 00:00:23,340 --> 00:00:27,570 >> Nyní vidíme, jsme okamžitě dělat změnit místo, kde jsme již kontrolu 8 00:00:27,570 --> 00:00:31,560 pro naše RX není roven 3, ale nyní jsme kontrolu rc není roven 4. 9 00:00:31,560 --> 00:00:34,670 Protože také chceme zahrnout do Přídavek na v souboru a ven souborů 10 00:00:34,670 --> 00:00:39,550 argumenty, f, která se bude v tomto Faktor, který jsme škálování. 11 00:00:39,550 --> 00:00:45,430 >> Takže jakmile jsme si jisti, že chceme používat s skenování f převést řetězec 12 00:00:45,430 --> 00:00:49,030 argv1 na plováku. 13 00:00:49,030 --> 00:00:51,330 A budeme ukládat že faktor. 14 00:00:51,330 --> 00:00:55,180 Tento dodatečný znak je ujistit se, že nejsou ve skutečnosti vstupu 15 00:00:55,180 --> 00:00:59,200 něco jako 1.4 ABC na příkazovém řádku. 16 00:00:59,200 --> 00:01:02,960 >> Nyní budeme vytvářet nějaké aliasy od RV2 a RV3 nejsou 17 00:01:02,960 --> 00:01:04,310 velmi užitečné jména. 18 00:01:04,310 --> 00:01:07,660 Jsme místo, bude volat je v souboru a ven souboru. 19 00:01:07,660 --> 00:01:11,580 Nyní budeme, aby se ujistil, že naše faktorem byl vlastně platí. 20 00:01:11,580 --> 00:01:16,330 Takže pokud faktor je menší než nebo rovno nula nebo větší než 100, pak podle 21 00:01:16,330 --> 00:01:19,660 spec, měli bychom odmítnout že faktor. 22 00:01:19,660 --> 00:01:23,890 >> Když jsme si jisti, že je to dobře, teď můžeme otevřete soubor n, a musíme učinit 23 00:01:23,890 --> 00:01:25,950 Ujistěte se, že to bylo úspěšně otevřeno. 24 00:01:25,950 --> 00:01:28,630 Pokud se tak nestalo, že se vrátí null. 25 00:01:28,630 --> 00:01:30,390 Chystáme se otevřít soubor ven. 26 00:01:30,390 --> 00:01:33,420 A opět, chceme zkontrolujte, ujistěte se, že je úspěšně otevřen. 27 00:01:33,420 --> 00:01:37,270 A jestli to nebyl úspěšně otevřít, a pak musíme také být jisti, zavřít 28 00:01:37,270 --> 00:01:40,870 soubor n, který původně úspěšně otevřený, jinak máme 29 00:01:40,870 --> 00:01:42,600 nevracení paměti. 30 00:01:42,600 --> 00:01:46,350 >> Takže teď budeme číst v bitmapě hlavičky souboru a bitmap info 31 00:01:46,350 --> 00:01:48,890 záhlaví ze souboru n. 32 00:01:48,890 --> 00:01:52,360 Budeme se ujistěte, že n soubor byl platný rastrový obrázek. 33 00:01:52,360 --> 00:01:52,640 OK. 34 00:01:52,640 --> 00:01:55,100 >> Takže teď budeme začít dělat nějaké změny. 35 00:01:55,100 --> 00:01:58,840 Takže, protože budeme se mění věci, jsme se nejprve chtít mít na paměti, 36 00:01:58,840 --> 00:02:01,510 starý šířka souboru n. 37 00:02:01,510 --> 00:02:05,160 Chceme vzpomenout na staré odsazení soubor n s použitím stejného výpočtu 38 00:02:05,160 --> 00:02:06,990 od copy.c. 39 00:02:06,990 --> 00:02:09,840 >> A teď jdeme na změnu bitmap info záhlaví. 40 00:02:09,840 --> 00:02:13,630 A tak jsme násobení i šířku a výšky koeficientem od 41 00:02:13,630 --> 00:02:15,750 že to, co jsme škálování. 42 00:02:15,750 --> 00:02:18,420 Chystáme se zjistit, nové čalounění spisu 43 00:02:18,420 --> 00:02:21,140 pomocí nového šířku. 44 00:02:21,140 --> 00:02:27,330 A jdeme na určení nového velikost obrazu pomocí počtu 45 00:02:27,330 --> 00:02:31,610 bytů v jedné řadě, která se chystá je počet pixelů v daném řádku 46 00:02:31,610 --> 00:02:35,960 krát velikost pixelu a počet bajtů polstrování na konci 47 00:02:35,960 --> 00:02:40,310 na daném řádku, a násobí vše podle počtu řádků, které máme. 48 00:02:40,310 --> 00:02:43,800 Tak to je počet bajtů máme v našich obrazových dat. 49 00:02:43,800 --> 00:02:48,190 >> Bf.Bfsize teď bude číslo z bytů v našem obrazu beta a 50 00:02:48,190 --> 00:02:49,350 velikost našich záhlaví. 51 00:02:49,350 --> 00:02:53,910 Takže plus velikosti hlavičky bitmapový soubor a velikost bitmapy info záhlaví. 52 00:02:53,910 --> 00:02:54,510 OK. 53 00:02:54,510 --> 00:02:56,440 Tak to je pro naše hlavičky. 54 00:02:56,440 --> 00:02:59,030 Můžeme zapisovat soubor hlavu a info záhlaví naší out 55 00:02:59,030 --> 00:03:01,590 soubor, a jsme v pohodě. 56 00:03:01,590 --> 00:03:03,800 >> Nyní je čas začít skutečně psaní na pixel 57 00:03:03,800 --> 00:03:05,120 dat do souboru out. 58 00:03:05,120 --> 00:03:10,460 Budeme prohlásit vyrovnávací paměť o velikosti starý šířka RGB trojic, a my jsme 59 00:03:10,460 --> 00:03:13,790 bude deklarovat proměnnou s názvem řada otupělý, což je budeme 60 00:03:13,790 --> 00:03:15,640 zpočátku rovna Negativní 1. 61 00:03:15,640 --> 00:03:19,090 Uvidíme, že budeme používat že s cílem sledovat, co 62 00:03:19,090 --> 00:03:22,640 ř. V současné době máme naloženo do této vyrovnávací paměti. 63 00:03:22,640 --> 00:03:23,290 OK. 64 00:03:23,290 --> 00:03:28,750 >> Takže teď na rozdíl od standardní verze, místo iterace na in 65 00:03:28,750 --> 00:03:32,900 soubor, budeme iterovat přes sebe řádek v souboru ven a zjistit, 66 00:03:32,900 --> 00:03:38,130 který řádek v souboru ve chceme místo v tomto řádku v souboru out. 67 00:03:38,130 --> 00:03:44,930 Takže iterace přes všechny řádky v out soubor pomocí nové výšky, jsme první 68 00:03:44,930 --> 00:03:48,890 bude k určení řádku v staré soubor budeme používat, které jsme 69 00:03:48,890 --> 00:03:53,560 dělat tím, že tento proud řádek děleno koeficientem. 70 00:03:53,560 --> 00:03:58,000 Takže, co se děje, aby nám na řádek ve starém souboru, který chceme. 71 00:03:58,000 --> 00:04:03,310 >> Takže teď, pokud řádek znecitlivění není stejný starý y, budeme muset přečíst řádek 72 00:04:03,310 --> 00:04:05,940 že chceme do našeho zralost řádku vyrovnávací paměti. 73 00:04:05,940 --> 00:04:07,700 Tak jak budeme dělat, že? 74 00:04:07,700 --> 00:04:11,650 Za prvé, jedeme zjistit, pozice, která začíná tento řádek 75 00:04:11,650 --> 00:04:13,100 původní soubor. 76 00:04:13,100 --> 00:04:18,630 Tak, že pozice bude přes všechny naše záhlaví a 77 00:04:18,630 --> 00:04:21,589 nyní v minulých staré y řádky. 78 00:04:21,589 --> 00:04:23,880 >> A tak kolik bajtů jsou v jednom řádku? 79 00:04:23,880 --> 00:04:28,740 Opět platí, že velikost RGB třílůžkových krát let šířka a staré vycpávky, takže je 80 00:04:28,740 --> 00:04:30,640 počet bajtů v jednom řádku. 81 00:04:30,640 --> 00:04:33,680 A chceme přeskočit minulosti staré y řádků. 82 00:04:33,680 --> 00:04:37,580 Takže jdeme na f vyhledávat a my jsme pomocí se snaží set začít od 83 00:04:37,580 --> 00:04:39,100 začátek souboru. 84 00:04:39,100 --> 00:04:42,740 Budeme f usilovat o tuto pozici v souboru, nás uvedení na 85 00:04:42,740 --> 00:04:46,500 začátku řádku, který chceme číst do naší paměti. 86 00:04:46,500 --> 00:04:48,510 >> Budeme nastavit řádek otupělá rovná starého y. 87 00:04:48,510 --> 00:04:53,080 Takže teď, pokud se smyčka zpět a chceme použít stejný řádek v naší ven souboru, 88 00:04:53,080 --> 00:04:55,970 pak nebudeme číst to opět zbytečně. 89 00:04:55,970 --> 00:04:59,310 Takže opravdu, řada znecitlivění je jen optimalizace. 90 00:04:59,310 --> 00:05:05,500 >> Nakonec, budeme číst do aktuální řádek starý šířka RGB trojic 91 00:05:05,500 --> 00:05:08,040 že chceme z původního souboru. 92 00:05:08,040 --> 00:05:12,270 Takže teď teď řádek obsahuje obrazové body z původní soubor, který chceme 93 00:05:12,270 --> 00:05:14,200 zapsat do souboru out. 94 00:05:14,200 --> 00:05:18,960 Takže teď, stejně jako výše, místo toho, aby iterace přes starý soubor, musíme 95 00:05:18,960 --> 00:05:22,560 to iteraci nových souborů řádků. 96 00:05:22,560 --> 00:05:27,450 Tak tady, místo iterace přes všechny starých pixelů, které v součas řadě, 97 00:05:27,450 --> 00:05:31,210 chceme iterovat přes všechny pixelů v našem novém souboru v této 98 00:05:31,210 --> 00:05:32,480 Zejména řádek. 99 00:05:32,480 --> 00:05:34,140 >> Proč chceme dělat, že? 100 00:05:34,140 --> 00:05:38,960 Vzhledem k tomu, zde vidíme, že nejsme ve skutečnosti nutně používat všechny 101 00:05:38,960 --> 00:05:41,020 pixelů v původním souboru. 102 00:05:41,020 --> 00:05:46,630 Protože když jsme zmenšuje, mohli bychom vlastně chtít přeskočit pixelů. 103 00:05:46,630 --> 00:05:48,090 A vidíme, že tento - 104 00:05:48,090 --> 00:05:49,690 x děleno koeficientem - 105 00:05:49,690 --> 00:05:55,620 věrně odráží tady, kde říkáme y děleno koeficientem přijít na to, že 106 00:05:55,620 --> 00:06:02,480 starý y-tý řádek odpovídá y-tý řádek v tomto novém souboru. 107 00:06:02,480 --> 00:06:05,880 >> Teď budeme psát všechny Tyto body ze staré řady 108 00:06:05,880 --> 00:06:07,440 do naší nové řady. 109 00:06:07,440 --> 00:06:10,890 Poté, co jsme udělali, že musíme jen dal výplň na konci naší řady 110 00:06:10,890 --> 00:06:15,540 a my budeme smyčku zpět a pokračujte všechny řádky v našem novém souboru. 111 00:06:15,540 --> 00:06:19,390 Na konci, musíme ukončit náš starý soubor, zavřete náš nový soubor, a návrat 112 00:06:19,390 --> 00:06:21,540 nula, protože šlo všechno v pohodě. 113 00:06:21,540 --> 00:06:24,220 >> Jmenuji se Rob a to výklenek. 114 00:06:24,220 --> 00:06:29,184 >> [MUSIC PŘEHRÁVÁNÍ]