[MUSIC PLAYBACK] ROB BOWDEN: Ahoj. Som Rob a poďme veľkosť do tohto problému. Takže ideme na začiatok copy.c ako šablóna, ale budeme mať Vďaka pomerne málo zmien. Teraz vidíme, sme okamžite robiť zmeniť miesto, kde sme už kontrolu pre naše RX nie je rovný 3, ale teraz sme kontrolu rc nie je rovný 4. Pretože tiež chceme zahrnúť do Prídavok na v súbore a von súborov argumenty, f, ktorá sa bude v tomto Faktor, ktorý sme škálovanie. Takže akonáhle sme si istí, že chceme používať s skenovanie f previesť reťazec argv1 na plaváku. A budeme ukladať že faktor. Tento dodatočný znak je uistiť sa, že nie sú v skutočnosti vstupe niečo ako 1.4 ABC na príkazovom riadku. Teraz budeme vytvárať nejaké aliasy od RV2 a RV3 nie sú veľmi užitočné mená. Sme miesto, bude volať je v súbore a von súboru. Teraz budeme, aby sa uistil, že naše faktorom bol vlastne platí. Takže ak faktor je menšie alebo rovné nula alebo väčšie ako 100, potom podľa spec, mali by sme odmietnuť že faktor. Keď sme si istí, že je to dobre, teraz môžeme otvorte súbor n, a musíme urobiť Uistite sa, že to bolo úspešne otvorené. Ak sa tak nestalo, že sa vráti null. Chystáme sa otvoriť súbor von. A opäť, chceme skontrolujte, uistite sa, že je úspešne otvorený. A či to nebol úspešne otvoriť, a potom musíme tiež byť istí, zavrieť súbor n, ktorý pôvodne úspešne otvorený, inak máme pretečeniu pamäte. Takže teraz budeme čítať v bitmape hlavičky súboru a bitmap info hlavičku zo súboru n Budeme sa uistite, že n súbor bol platný rastrový obrázok. OK. Takže teraz budeme začať robiť nejaké zmeny. Takže, pretože budeme sa mení veci, sme sa najprv chcieť mať na pamäti, starý šírka súboru n Chceme spomenúť na staré odsadenie súbor n s použitím rovnakého výpočtu od copy.c. A teraz ideme na zmenu bitmap info hlavičky. A tak sme násobenie i šírku a výšky koeficientom od že to, čo sme škálovanie. Chystáme sa zistiť, nové čalúnenie spisu pomocou nového šírku. A ideme na určenie nového veľkosť obrazu pomocou počtu bytov v jednom rade, ktorá sa chystá je počet pixelov v danom riadku krát veľkosť pixelu a počet bajtov polstrovanie na konci na danom riadku, a násobí všetko podľa počtu riadkov, ktoré máme. Tak to je počet bajtov máme v našich obrazových dát. Bf.Bfsize teraz bude číslo z bytov v našom obrazu beta a veľkosť našich hlavičky. Takže plus veľkosti hlavičky bitmapový súbor a veľkosť bitmapy info hlavičky. OK. Tak to je pre naše hlavičky. Môžeme zapisovať súbor hlavu a info záhlavie našej out súbor, a sme v pohode. Teraz je čas začať skutočne písanie na pixel dát do súboru out. Budeme vyhlásiť vyrovnávaciu pamäť o veľkosti starý šírka RGB trojíc, a my sme bude deklarovať premennú s názvom rad otupený, čo je budeme spočiatku rovná Negatívne 1. Uvidíme, že budeme používať že s cieľom sledovať, čo ř V súčasnej dobe máme naložené do tejto vyrovnávacej pamäti. OK. Takže teraz na rozdiel od štandardnej verzie, miesto iterácie na in súbor, budeme iterovat cez seba riadok v súbore von a zistiť, ktorý riadok v súbore vo chceme miesto v tomto riadku v súbore out. Takže iterácia cez všetky riadky v out súbor pomocou novej výšky, sme prvý bude na určenie riadku v starej súbor budeme používať, ktoré sme robiť tým, že tento prúd riadok delené koeficientom. Takže, čo sa deje, aby nám na riadok v starom súboru, ktorý chceme. Takže teraz, ak riadok znecitlivenie nie je rovnaký starý y, budeme musieť prečítať riadok že chceme do nášho zrelosť riadku vyrovnávacej pamäti. Tak ako budeme robiť, že? Po prvé, ideme zistiť, pozície, ktorá začína tento riadok pôvodný súbor. Tak, že pozícia bude cez všetky naše hlavičky a teraz v minulých starej y riadky. A tak koľko bajtov sú v jednom riadku? Opäť platí, že veľkosť RGB trojlôžkových krát rokov šírka a staré vypchávky, takže je počet bajtov v jednom riadku. A chceme preskočiť minulosti starej y riadkov. Takže ideme na f vyhľadávať a my sme pomocou sa snaží set začať od začiatok súboru. Budeme f usilovať o túto pozíciu v súbore, nás uvedenie na začiatku riadku, ktorý chceme čítať do našej pamäti. Budeme nastaviť riadok otupení rovná starého y. Takže teraz, ak sa slučka späť a chceme použiť rovnaký riadok v našej von súboru, potom nebudeme čítať to opäť zbytočne. Takže naozaj, rad znecitlivenie je len optimalizácia. Nakoniec, budeme čítať do aktuálny riadok starý šírka RGB trojíc že chceme z pôvodného súboru. Takže teraz teraz riadok obsahuje obrazové body z pôvodný súbor, ktorý chceme zapísať do súboru out. Takže teraz, rovnako ako vyššie, namiesto toho, aby iterácia cez starý súbor, musíme to iterácii nových súborov riadkov. Tak tu, miesto iterácia cez všetky starých pixelov, ktoré v súčas rade, chceme iterovat cez všetky pixelov v našom novom súbore v tejto Najmä riadok. Prečo chceme robiť, že? Vzhľadom k tomu, tu vidíme, že nie sme v skutočnosti nutne používať všetky pixelov v pôvodnom súbore. Pretože keď sme zmenšuje, mohli by sme vlastne chcieť preskočiť pixelov. A vidíme, že tento - x delené koeficientom - verne odráža tu, kde hovoríme y delené koeficientom prísť na to, že starý y-tý riadok zodpovedá y-tý riadok v tomto novom súbore. Teraz budeme písať všetky Tieto body zo starej radu do našej novej rady. Potom, čo sme urobili, že musíme len dal výplň na konci našej rady a my budeme slučku späť a pokračujte všetky riadky v našom novom súbore. Na konci, musíme ukončiť náš starý súbor, zatvorte náš nový súbor, a návrat nula, pretože išlo všetko v pohode. Volám sa Rob a to výklenok. [MUSIC PLAYBACK]