1 00:00:00,000 --> 00:00:00,996 2 00:00:00,996 --> 00:00:12,470 >> [MUSIC PLAYBACK] 3 00:00:12,470 --> 00:00:13,210 >> ROB BOWDEN: Ahoj. 4 00:00:13,210 --> 00:00:16,870 Som Rob a poďme veľkosť do tohto problému. 5 00:00:16,870 --> 00:00:20,990 Takže ideme na začiatok copy.c ako šablóna, ale budeme mať 6 00:00:20,990 --> 00:00:23,340 Vďaka pomerne málo zmien. 7 00:00:23,340 --> 00:00:27,570 >> Teraz vidíme, sme okamžite robiť zmeniť miesto, kde sme už kontrolu 8 00:00:27,570 --> 00:00:31,560 pre naše RX nie je rovný 3, ale teraz sme kontrolu rc nie je rovný 4. 9 00:00:31,560 --> 00:00:34,670 Pretože tiež chceme zahrnúť do Prídavok na v súbore a von súborov 10 00:00:34,670 --> 00:00:39,550 argumenty, f, ktorá sa bude v tomto Faktor, ktorý sme škálovanie. 11 00:00:39,550 --> 00:00:45,430 >> Takže akonáhle sme si istí, že chceme používať s skenovanie f previesť reťazec 12 00:00:45,430 --> 00:00:49,030 argv1 na plaváku. 13 00:00:49,030 --> 00:00:51,330 A budeme ukladať že faktor. 14 00:00:51,330 --> 00:00:55,180 Tento dodatočný znak je uistiť sa, že nie sú v skutočnosti vstupe 15 00:00:55,180 --> 00:00:59,200 niečo ako 1.4 ABC na príkazovom riadku. 16 00:00:59,200 --> 00:01:02,960 >> Teraz budeme vytvárať nejaké aliasy od RV2 a RV3 nie sú 17 00:01:02,960 --> 00:01:04,310 veľmi užitočné mená. 18 00:01:04,310 --> 00:01:07,660 Sme miesto, bude volať je v súbore a von súboru. 19 00:01:07,660 --> 00:01:11,580 Teraz budeme, aby sa uistil, že naše faktorom bol vlastne platí. 20 00:01:11,580 --> 00:01:16,330 Takže ak faktor je menšie alebo rovné nula alebo väčšie ako 100, potom podľa 21 00:01:16,330 --> 00:01:19,660 spec, mali by sme odmietnuť že faktor. 22 00:01:19,660 --> 00:01:23,890 >> Keď sme si istí, že je to dobre, teraz môžeme otvorte súbor n, a musíme urobiť 23 00:01:23,890 --> 00:01:25,950 Uistite sa, že to bolo úspešne otvorené. 24 00:01:25,950 --> 00:01:28,630 Ak sa tak nestalo, že sa vráti null. 25 00:01:28,630 --> 00:01:30,390 Chystáme sa otvoriť súbor von. 26 00:01:30,390 --> 00:01:33,420 A opäť, chceme skontrolujte, uistite sa, že je úspešne otvorený. 27 00:01:33,420 --> 00:01:37,270 A či to nebol úspešne otvoriť, a potom musíme tiež byť istí, zavrieť 28 00:01:37,270 --> 00:01:40,870 súbor n, ktorý pôvodne úspešne otvorený, inak máme 29 00:01:40,870 --> 00:01:42,600 pretečeniu pamäte. 30 00:01:42,600 --> 00:01:46,350 >> Takže teraz budeme čítať v bitmape hlavičky súboru a bitmap info 31 00:01:46,350 --> 00:01:48,890 hlavičku zo súboru n 32 00:01:48,890 --> 00:01:52,360 Budeme sa uistite, že n súbor bol platný rastrový obrázok. 33 00:01:52,360 --> 00:01:52,640 OK. 34 00:01:52,640 --> 00:01:55,100 >> Takže teraz budeme začať robiť nejaké zmeny. 35 00:01:55,100 --> 00:01:58,840 Takže, pretože budeme sa mení veci, sme sa najprv chcieť mať na pamäti, 36 00:01:58,840 --> 00:02:01,510 starý šírka súboru n 37 00:02:01,510 --> 00:02:05,160 Chceme spomenúť na staré odsadenie súbor n s použitím rovnaké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 teraz ideme na zmenu bitmap info hlavičky. 40 00:02:09,840 --> 00:02:13,630 A tak sme násobenie i šírku a výšky koeficientom od 41 00:02:13,630 --> 00:02:15,750 že to, čo sme škálovanie. 42 00:02:15,750 --> 00:02:18,420 Chystáme sa zistiť, nové čalúnenie spisu 43 00:02:18,420 --> 00:02:21,140 pomocou nového šírku. 44 00:02:21,140 --> 00:02:27,330 A ideme na určenie nového veľkosť obrazu pomocou počtu 45 00:02:27,330 --> 00:02:31,610 bytov v jednom rade, ktorá sa chystá je počet pixelov v danom riadku 46 00:02:31,610 --> 00:02:35,960 krát veľkosť pixelu a počet bajtov polstrovanie na konci 47 00:02:35,960 --> 00:02:40,310 na danom riadku, a násobí všetko podľa počtu riadkov, ktoré máme. 48 00:02:40,310 --> 00:02:43,800 Tak to je počet bajtov máme v našich obrazových dát. 49 00:02:43,800 --> 00:02:48,190 >> Bf.Bfsize teraz bude číslo z bytov v našom obrazu beta a 50 00:02:48,190 --> 00:02:49,350 veľkosť našich hlavičky. 51 00:02:49,350 --> 00:02:53,910 Takže plus veľkosti hlavičky bitmapový súbor a veľkosť bitmapy info hlavičky. 52 00:02:53,910 --> 00:02:54,510 OK. 53 00:02:54,510 --> 00:02:56,440 Tak to je pre naše hlavičky. 54 00:02:56,440 --> 00:02:59,030 Môžeme zapisovať súbor hlavu a info záhlavie našej out 55 00:02:59,030 --> 00:03:01,590 súbor, a sme v pohode. 56 00:03:01,590 --> 00:03:03,800 >> Teraz je čas začať skutočne písanie na pixel 57 00:03:03,800 --> 00:03:05,120 dát do súboru out. 58 00:03:05,120 --> 00:03:10,460 Budeme vyhlásiť vyrovnávaciu pamäť o veľkosti starý šírka RGB trojíc, a my sme 59 00:03:10,460 --> 00:03:13,790 bude deklarovať premennú s názvom rad otupený, čo je budeme 60 00:03:13,790 --> 00:03:15,640 spočiatku rovná Negatívne 1. 61 00:03:15,640 --> 00:03:19,090 Uvidíme, že budeme používať že s cieľom sledovať, čo 62 00:03:19,090 --> 00:03:22,640 ř V súčasnej dobe máme naložené do tejto vyrovnávacej pamäti. 63 00:03:22,640 --> 00:03:23,290 OK. 64 00:03:23,290 --> 00:03:28,750 >> Takže teraz na rozdiel od štandardnej verzie, miesto iterácie na in 65 00:03:28,750 --> 00:03:32,900 súbor, budeme iterovat cez seba riadok v súbore von a zistiť, 66 00:03:32,900 --> 00:03:38,130 ktorý riadok v súbore vo chceme miesto v tomto riadku v súbore out. 67 00:03:38,130 --> 00:03:44,930 Takže iterácia cez všetky riadky v out súbor pomocou novej výšky, sme prvý 68 00:03:44,930 --> 00:03:48,890 bude na určenie riadku v starej súbor budeme používať, ktoré sme 69 00:03:48,890 --> 00:03:53,560 robiť tým, že tento prúd riadok delené koeficientom. 70 00:03:53,560 --> 00:03:58,000 Takže, čo sa deje, aby nám na riadok v starom súboru, ktorý chceme. 71 00:03:58,000 --> 00:04:03,310 >> Takže teraz, ak riadok znecitlivenie nie je rovnaký starý y, budeme musieť prečítať riadok 72 00:04:03,310 --> 00:04:05,940 že chceme do nášho zrelosť riadku vyrovnávacej pamäti. 73 00:04:05,940 --> 00:04:07,700 Tak ako budeme robiť, že? 74 00:04:07,700 --> 00:04:11,650 Po prvé, ideme zistiť, pozície, ktorá začína tento riadok 75 00:04:11,650 --> 00:04:13,100 pôvodný súbor. 76 00:04:13,100 --> 00:04:18,630 Tak, že pozícia bude cez všetky naše hlavičky a 77 00:04:18,630 --> 00:04:21,589 teraz v minulých starej y riadky. 78 00:04:21,589 --> 00:04:23,880 >> A tak koľko bajtov sú v jednom riadku? 79 00:04:23,880 --> 00:04:28,740 Opäť platí, že veľkosť RGB trojlôžkových krát rokov šírka a staré vypchávky, takže je 80 00:04:28,740 --> 00:04:30,640 počet bajtov v jednom riadku. 81 00:04:30,640 --> 00:04:33,680 A chceme preskočiť minulosti starej y riadkov. 82 00:04:33,680 --> 00:04:37,580 Takže ideme na f vyhľadávať a my sme pomocou sa snaží set začať od 83 00:04:37,580 --> 00:04:39,100 začiatok súboru. 84 00:04:39,100 --> 00:04:42,740 Budeme f usilovať o túto pozíciu v súbore, nás uvedenie na 85 00:04:42,740 --> 00:04:46,500 začiatku riadku, ktorý chceme čítať do našej pamäti. 86 00:04:46,500 --> 00:04:48,510 >> Budeme nastaviť riadok otupení rovná starého y. 87 00:04:48,510 --> 00:04:53,080 Takže teraz, ak sa slučka späť a chceme použiť rovnaký riadok v našej von súboru, 88 00:04:53,080 --> 00:04:55,970 potom nebudeme čítať to opäť zbytočne. 89 00:04:55,970 --> 00:04:59,310 Takže naozaj, rad znecitlivenie je len optimalizácia. 90 00:04:59,310 --> 00:05:05,500 >> Nakoniec, budeme čítať do aktuálny riadok starý šírka RGB trojíc 91 00:05:05,500 --> 00:05:08,040 že chceme z pôvodného súboru. 92 00:05:08,040 --> 00:05:12,270 Takže teraz teraz riadok obsahuje obrazové body z pôvodný súbor, ktorý chceme 93 00:05:12,270 --> 00:05:14,200 zapísať do súboru out. 94 00:05:14,200 --> 00:05:18,960 Takže teraz, rovnako ako vyššie, namiesto toho, aby iterácia cez starý súbor, musíme 95 00:05:18,960 --> 00:05:22,560 to iterácii nových súborov riadkov. 96 00:05:22,560 --> 00:05:27,450 Tak tu, miesto iterácia cez všetky starých pixelov, ktoré v súčas rade, 97 00:05:27,450 --> 00:05:31,210 chceme iterovat cez všetky pixelov v našom novom súbore v tejto 98 00:05:31,210 --> 00:05:32,480 Najmä riadok. 99 00:05:32,480 --> 00:05:34,140 >> Prečo chceme robiť, že? 100 00:05:34,140 --> 00:05:38,960 Vzhľadom k tomu, tu vidíme, že nie sme v skutočnosti nutne používať všetky 101 00:05:38,960 --> 00:05:41,020 pixelov v pôvodnom súbore. 102 00:05:41,020 --> 00:05:46,630 Pretože keď sme zmenšuje, mohli by sme vlastne chcieť preskočiť pixelov. 103 00:05:46,630 --> 00:05:48,090 A vidíme, že tento - 104 00:05:48,090 --> 00:05:49,690 x delené koeficientom - 105 00:05:49,690 --> 00:05:55,620 verne odráža tu, kde hovoríme y delené koeficientom prísť na to, že 106 00:05:55,620 --> 00:06:02,480 starý y-tý riadok zodpovedá y-tý riadok v tomto novom súbore. 107 00:06:02,480 --> 00:06:05,880 >> Teraz budeme písať všetky Tieto body zo starej radu 108 00:06:05,880 --> 00:06:07,440 do našej novej rady. 109 00:06:07,440 --> 00:06:10,890 Potom, čo sme urobili, že musíme len dal výplň na konci našej rady 110 00:06:10,890 --> 00:06:15,540 a my budeme slučku späť a pokračujte všetky riadky v našom novom súbore. 111 00:06:15,540 --> 00:06:19,390 Na konci, musíme ukončiť náš starý súbor, zatvorte náš nový súbor, a návrat 112 00:06:19,390 --> 00:06:21,540 nula, pretože išlo všetko v pohode. 113 00:06:21,540 --> 00:06:24,220 >> Volám sa Rob a to výklenok. 114 00:06:24,220 --> 00:06:29,184 >> [MUSIC PLAYBACK]