>> [MUSIC PŘEHRÁVÁNÍ]
>> ROB Bowden: Ahoj, já jsem Rob, pojďme zkuste to kvůli velikosti.
Takže jsme se opět začnou s v podstatě kopie copy.c, a
provést několik změn.
Poznámka okamžitě vidíme změny, kde místo kontroly, zda
argc není rovno 3, chceme zkontrolovat pokud argc není rovno 4, protože
Nyní jsme nejen brát v INFILE a outfile, ale my jsme také přičemž v
n, což je částka, kterou jsme měřítko původní obraz.
Poté, co jsme si jisti, že můžeme jen převést n na integer pomocí atoi.
>> Tak, teď budeme vytvářet nějaké přezdívky, stačí zavolat argv 2 INFILE, a
argv 3 outfile, protože argv 2 a argv 3 nemůže velmi užitečné jména.
Nyní chceme, aby zkontrolujte, zda n je v mezích očekáváme, takže
spec uvádí, že v případě, že je menší než nebo se rovná nule, nebo větší než 100,
pak je to neplatné resize faktor, a měli bychom varovat uživatele, že.
>> Poté, co jsme za všechno, můžeme konečně otevřít naše soubor_se_hrou, a my potřebujeme
chyby zkontrolovat, aby se ujistil, že otevření nezklamal z nějakého důvodu.
Musíme také otevřít naše outfile, a opět chyba zkontrolovat, aby se ujistil, že
neselhal z nějakého důvodu.
Ale být jisti, zda otevření outfile nedokázal, že musíme zavřít
infile, která již byla otevřena.
>> Takže, za předpokladu, že neselhal, pak Jsme - stejně jako v copy.c--
bude číst v záhlaví od infile.
Chystáme se ujistil, že to platí bitmap, ale teď budeme dělat nějaké
věci trochu jinak.
Tak za prvé, budeme chtít, aby vzpomenout na původní šířku a výšku
ze vstupni soubor, protože budeme se mění jej na outFile.
Takže teď si uvědomit, že za podivných důvodů bi.biheight, je negativní, a
takže skutečná výška, v pozitivní, se Chcete mít absolutní hodnotu.
>> Nyní, výplň bude stejný výpočet, jak to bylo v copy.c,
používat staré šířku, a teď jsme ve skutečnosti se změní
to, co je v našem záhlaví.
Takže budeme násobit naše šířku podle n, protože jsme škálování šířku podle
n, vynásobte výšku n, protože jsme škálování podle n, a teď máme
výpočet pro novou výplň vztaženo na novou šířku.
>> Takže teď musíme změnit některé Všechny ostatní položky v našem záhlaví.
Bi.biSizeImage má být Velikost všech bytů v pixelech
a polstrování z obrázku.
A tak velikost jednoho řádku naší obrázek je velikost RGB trojnásobný, velikost
jediného pixelu, krát počet pixelů v řadě, plus polstrování na
konec řádku.
A pak budeme násobit, že absolutní hodnota naší výšky dostat
celkový počet bajtů v obrazových datech.
bf.bfSize je pouze celkový počet z bytů v našich obrazových dat, takže
bi.biSizeImage, plus Velikost našich hlaviček.
Takže s tím, na velikosti bitmapového souboru záhlaví a velikost bitmapy informací
záhlaví, OK.
Tak to je vše, co potřebujeme Změna v našich hlavičkách.
Teď budeme psát záhlaví bitmap souboru naší outFile, a naše bitmapové informace
header naší outFile, a teď Jsme připraveni začít chodit
na skutečných pixelů.
>> Takže chceme iteraci sejmutí na vstupni soubor je.
Takže chceme iterovat přes oldheight.
To je důvod, proč jsme potřebovali mít na paměti, původní výšky, než jsme to změnit
a zmenšen ji n.
Teď budeme číst jeden řádek INFILE do
vyrovnávací paměť o velikosti oldwidth.
Tak tady jsme freading velikost RGB třílůžkový, jeden pixel, a starý šířka
je z INFILE do naší paměti.
A že to bude celý ř. v tomto poli.
Takže teď, chceme iterovat n časy vytisknout tento řádek do naší outFile n krát.
A tak to je to, co tato smyčka se dělá.
Tato vnitřní smyčky iterace ř. sám, přes pole, tisk
Každý pixel v poli n krát.
Takže nultý prvek je vytištěna n krát, první prvek je
tištěný n-krát.
A to je trochu o tom, jak budeme vodorovně škálovat v outFile, a
tato smyčka, protože jsme opakování n krát, je to, jak budeme
vertikálně stupnice.
>> Tady dole vidíme, že musíme přidat polstrování na konci každého řádku.
To je důvod, proč je to uvnitř pro smyčku že je vytisknout na n řádků jen
tento jeden řádek z INFILE.
Pak tady dole, budu přeskočit polstrování v INFILE, protože jakmile
jsme hotovi s jednou řadou infile, my se nestaráme o
co polstrování bylo.
Chceme jen, aby se na druhém řádku.
A pak budeme přecházet zpět a udělat vše, To opět na druhém řádku.
>> Nakonec, když jsme hotovi s tím vším, můžeme uzavřít soubor_se_hrou, v blízkosti
outfile, a návrat 0, protože jsme hotovi.
>> Jmenuji se Rob, a to resize.
>> [MUSIC PŘEHRÁVÁNÍ]