>> [MUSIC PŘEHRÁVÁNÍ]
>> ROB BOWDEN: Ahoj.
Jsem Rob a pojďme velikost do tohoto problému.
Takže jdeme na začátek copy.c jako šablona, ​​ale budeme mít
Díky poměrně málo změn.
>> Nyní vidíme, jsme okamžitě dělat změnit místo, kde jsme již kontrolu
pro naše RX není roven 3, ale nyní jsme kontrolu rc není roven 4.
Protože také chceme zahrnout do Přídavek na v souboru a ven souborů
argumenty, f, která se bude v tomto Faktor, který jsme škálování.
>> Takže jakmile jsme si jisti, že chceme používat s skenování f převést řetězec
argv1 na plováku.
A budeme ukládat že faktor.
Tento dodatečný znak je ujistit se, že nejsou ve skutečnosti vstupu
něco jako 1.4 ABC na příkazovém řádku.
>> Nyní budeme vytvářet nějaké aliasy od RV2 a RV3 nejsou
velmi užitečné jména.
Jsme místo, bude volat je v souboru a ven souboru.
Nyní budeme, aby se ujistil, že naše faktorem byl vlastně platí.
Takže pokud faktor je menší než nebo rovno nula nebo větší než 100, pak podle
spec, měli bychom odmítnout že faktor.
>> Když jsme si jisti, že je to dobře, teď můžeme otevřete soubor n, a musíme učinit
Ujistěte se, že to bylo úspěšně otevřeno.
Pokud se tak nestalo, že se vrátí null.
Chystáme se otevřít soubor ven.
A opět, chceme zkontrolujte, ujistěte se, že je úspěšně otevřen.
A jestli to nebyl úspěšně otevřít, a pak musíme také být jisti, zavřít
soubor n, který původně úspěšně otevřený, jinak máme
nevracení paměti.
>> Takže teď budeme číst v bitmapě hlavičky souboru a bitmap info
záhlaví ze souboru n.
Budeme se ujistěte, že n soubor byl platný rastrový obrázek.
OK.
>> Takže teď budeme začít dělat nějaké změny.
Takže, protože budeme se mění věci, jsme se nejprve chtít mít na paměti,
starý šířka souboru n.
Chceme vzpomenout na staré odsazení soubor n s použitím stejného výpočtu
od copy.c.
>> A teď jdeme na změnu bitmap info záhlaví.
A tak jsme násobení i šířku a výšky koeficientem od
že to, co jsme škálování.
Chystáme se zjistit, nové čalounění spisu
pomocí nového šířku.
A jdeme na určení nového velikost obrazu pomocí počtu
bytů v jedné řadě, která se chystá je počet pixelů v daném řádku
krát velikost pixelu a počet bajtů polstrování na konci
na daném řádku, a násobí vše podle počtu řádků, které máme.
Tak to je počet bajtů máme v našich obrazových dat.
>> Bf.Bfsize teď bude číslo z bytů v našem obrazu beta a
velikost našich záhlaví.
Takže plus velikosti hlavičky bitmapový soubor a velikost bitmapy info záhlaví.
OK.
Tak to je pro naše hlavičky.
Můžeme zapisovat soubor hlavu a info záhlaví naší out
soubor, a jsme v pohodě.
>> Nyní je čas začít skutečně psaní na pixel
dat do souboru out.
Budeme prohlásit vyrovnávací paměť o velikosti starý šířka RGB trojic, a my jsme
bude deklarovat proměnnou s názvem řada otupělý, což je budeme
zpočátku rovna Negativní 1.
Uvidíme, že budeme používat že s cílem sledovat, co
ř. V současné době máme naloženo do této vyrovnávací paměti.
OK.
>> Takže teď na rozdíl od standardní verze, místo iterace na in
soubor, budeme iterovat přes sebe řádek v souboru ven a zjistit,
který řádek v souboru ve chceme místo v tomto řádku v souboru out.
Takže iterace přes všechny řádky v out soubor pomocí nové výšky, jsme první
bude k určení řádku v staré soubor budeme používat, které jsme
dělat tím, že tento proud řádek děleno koeficientem.
Takže, co se děje, aby nám na řádek ve starém souboru, který chceme.
>> Takže teď, pokud řádek znecitlivění není stejný starý y, budeme muset přečíst řádek
že chceme do našeho zralost řádku vyrovnávací paměti.
Tak jak budeme dělat, že?
Za prvé, jedeme zjistit, pozice, která začíná tento řádek
původní soubor.
Tak, že pozice bude přes všechny naše záhlaví a
nyní v minulých staré y řádky.
>> A tak kolik bajtů jsou v jednom řádku?
Opět platí, že velikost RGB třílůžkových krát let šířka a staré vycpávky, takže je
počet bajtů v jednom řádku.
A chceme přeskočit minulosti staré y řádků.
Takže jdeme na f vyhledávat a my jsme pomocí se snaží set začít od
začátek souboru.
Budeme f usilovat o tuto pozici v souboru, nás uvedení na
začátku řádku, který chceme číst do naší paměti.
>> Budeme nastavit řádek otupělá rovná starého y.
Takže teď, pokud se smyčka zpět a chceme použít stejný řádek v naší ven souboru,
pak nebudeme číst to opět zbytečně.
Takže opravdu, řada znecitlivění je jen optimalizace.
>> Nakonec, budeme číst do aktuální řádek starý šířka RGB trojic
že chceme z původního souboru.
Takže teď teď řádek obsahuje obrazové body z původní soubor, který chceme
zapsat do souboru out.
Takže teď, stejně jako výše, místo toho, aby iterace přes starý soubor, musíme
to iteraci nových souborů řádků.
Tak tady, místo iterace přes všechny starých pixelů, které v součas řadě,
chceme iterovat přes všechny pixelů v našem novém souboru v této
Zejména řádek.
>> Proč chceme dělat, že?
Vzhledem k tomu, zde vidíme, že nejsme ve skutečnosti nutně používat všechny
pixelů v původním souboru.
Protože když jsme zmenšuje, mohli bychom vlastně chtít přeskočit pixelů.
A vidíme, že tento -
x děleno koeficientem -
věrně odráží tady, kde říkáme y děleno koeficientem přijít na to, že
starý y-tý řádek odpovídá y-tý řádek v tomto novém souboru.
>> Teď budeme psát všechny Tyto body ze staré řady
do naší nové řady.
Poté, co jsme udělali, že musíme jen dal výplň na konci naší řady
a my budeme smyčku zpět a pokračujte všechny řádky v našem novém souboru.
Na konci, musíme ukončit náš starý soubor, zavřete náš nový soubor, a návrat
nula, protože šlo všechno v pohodě.
>> Jmenuji se Rob a to výklenek.
>> [MUSIC PŘEHRÁVÁNÍ]