>> [Muusika mängib]
>> ROB BOWDEN: Hi.
Olen Rob ja olgem suurus kuni see probleem.
Nii et me ei kavatse alustada copy.c kui template, kuid me ei kavatse olla
tegemist üsna vähe muudatusi.
>> Nüüd näeme me kohe teha muuta, kui me ei ole enam kontroll
meie RXC ei võrdu 3, kuid nüüd me kontrollime rc ei võrdu 4.
Kuna me soovime ka lisada, et Lisaks faili ja sealt faile
argumente, f, mis saab olema selle tegur, millega me tagi.
>> Nii et kui me oleme kindlad, et me tahame kasutada s scan f teisendada string
argv1 et sularahaga.
Ja me ei kavatse hoida et tegur.
See täiendav märk on tagada, et me ei ole tegelikult sisenemist
midagi 1,4 ABC at käsureal.
>> Nüüd me ei kavatse luua mõned varjunimed alates RV2 ja RV3 ei
väga kasulik nimed.
Me hoopis kutsun neid faili ja sealt failist.
Nüüd me ei kavatse veenduge, et meie tegur oli tegelikult kehtiv.
Niisiis, kui tegur on väiksem või võrdne null või suurem kui 100, siis ühe
spec, me peaks tagasi lükkama et tegur.
>> Kui me oleme kindlad, et see on hea, nüüd saame avada n faili, ja me peame tegema
kindel, et see on edukalt avatud.
Kui see ei ole, et naaseb null.
Me läheme avada välja faili.
Ja veel, me tahame, et kontrollida, et teha kindel, et see on edukalt avatud.
Ja kui see ei ole edukalt avada, siis peame ka kindlasti sulgeda
n faili, mis algselt edukalt avatud, muidu on meil
mälu leke.
>> Nüüd me ei kavatse lugeda bitmap faili päis ja bitmap info
header alates n faili.
Me veenduge, et n fail oli kehtiv bitmap.
OK.
>> Nüüd me ei kavatse hakata teha mõned muudatused.
Niisiis, kuna me ei kavatse olla muutumas asjad, me esimest korda taha mäletada
vana laius n faili.
Tahame meenub vana polster n faili kasutades sama arvutus
alates copy.c.
>> Ja nüüd me muudame bitmap info kaudu.
Ja nii me korrutame mõlemad laius ja kõrgust tegur, sest
see on, mida me tagi järgi.
Me määrata uus polster fail
kasutades uusi laiusega.
Ja me ei kavatse määrata uus pildi suurust, kasutades arvu
baiti ühes reas, mis läheb olema pikslite arv selles reas
korda suurem pixel plus baitide arv padding lõpus
selle rea ja korrutades kogu selle mitmeid ridu, mis meil on.
Nii et baitide arv oleme meie pilti.
>> Bf.Bfsize nüüd saab olema number baitide meie pilt beta pluss
suurus meie päiseid.
Nii pluss suurus bitmap faili päis ja suurus bitmap info päises.
OK.
Nii ongi meie päised.
Me ei kirjuta faili juht ja info header meie välja
esitada, ja me oleme head.
>> Nüüd on aeg hakata tegelikult kirjalikult pixel
andmeid välja faili.
Me kinnitame puhvri suurus vana laius RGB kolmikute ja me oleme
kavatse kuulutada muutuja nimega rida tuimaks, mis me
esialgu võrdne miinus 1.
Me näeme, et me ei kavatse olla kasutades et selleks, et jälgida, mida
rida meil on praegu koormatud sellesse puhver.
OK.
>> Nüüd erinevalt standard edition, asemel iterating üle mis on
fail, me Käi iga rida välja fail ja nuputada
mis rida failis tahame Koht selles reas välja faili.
Nii iterating üle kõik read läbi faili uus kõrgus, me oleme esimene
läheb kindlaks rida vana fail me ei kavatse kasutada, mis me oleme
teeme võttes selle praegune rida jagatud teguriga.
Nii et läheb meile rida vana faili, mida me tahame.
>> Nüüd, kui järjest tuimaks ei võrdu vana y, me peame lugema rida
et me tahame meie viim rida puhver.
Niisiis, kuidas me saame seda teha?
Esiteks, me lähme välja selgitada, seisukoht, mis algab selle rea
originaal faili.
Nii et positsioon saab olema varem kõik meie päised ja
nüüd minevik vana y read.
>> Ja kui palju baite on ühes reas?
Jällegi suurus RGB triple korda vana laius pluss vana polster, nii et see
baitide arv ühes reas.
Ja me tahame vahele varem vana y read.
Nii et me läheme f otsima ja me oleme kasutades otsima komplekt alustada
alguses faili.
Me f püüdma seda seisukohta fail, paneb meid
alguses rida tahame lugeda meie puhver.
>> Me kehtestatud rida tuim võrdne vana y.
Nüüd, kui me loop tagasi ja me tahame kasutada sama rida meie out fail
siis me ei loe see jälle asjatult.
Nii et tõesti, järjest tuim on lihtsalt optimeerimine.
>> Lõpuks me läheme välja lugeda praegune rida vana laius RGB kolmekordistab
et tahame originaalfaili.
Nüüd viim reas on pikslid originaalfaili, et me tahame
kirjutage välja faili.
Nüüd, just nagu eespool asemel iterating üle vana faili, peame
see Käi uusi faile rida.
Noh siin, selle asemel iterating üle kõik vana px et viim järjest
tahame Käi kõik pikslite meie uus fail selles
Eelkõige järjest.
>> Miks me tahame seda teha?
Sest me näeme siin, et me ei ole tegelikult tingimata kasutades kõiki
pikslite originaalfaili.
Sest kui me kahanemine, võiksime tegelikult soovite vahele pikslit.
Ja me näeme, et see -
x jagatud tegur -
peegeldab siin, kus me ütleme y jagatud tegur nuputada, et
vana y-ndas reas vastab y-nda rea ​​selle uue faili.
>> Nüüd me ei kavatse kirjutada kõik need pikslit vanast rida
meie uus rida.
Kui oleme teinud, et me peame lihtsalt pane padding lõpus meie rida
Ja me loop tagasi ja jätkata kõik read meie uus fail.
Lõpus peame sulgeda vana fail, sulgeda oma uue faili ja tagastamine
null, sest kõik läks hästi.
>> Minu nimi on Rob ja see oli süvistatud.
>> [Muusika mängib]