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