>> [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]