[Mūzikas atskaņošanai] ROB BOWDEN: Hi. Es esmu Rob un ļaujiet lieluma līdz šai problēmai. Tāpēc mēs esam gatavojas sākt ar copy.c kā veidni, bet mēs ejam, lai būtu padarot diezgan maz izmaiņas. Tagad mēs redzam, mēs uzreiz padarot mainīt, ja mēs vairs pārbaudot par mūsu RXC nav vienāds 3, bet tagad mēs pārbaudīt RC nav vienāds 4. Tā mēs arī vēlamies iekļaut, jo papildinājums faila un no failiem argumenti, f, kas būs šo koeficients, ar kuru mēs esam mērogošana. Tātad, kad mēs esam pārliecināti, ka mēs vēlamies izmantot s skenēšanas f, lai pārvērstu string argv1 uz apgrozāmos līdzekļus. Un mēs ejam, lai saglabātu ka faktors. Šis papildu raksturs, ir pārliecināties, ka mēs faktiski ienāk kaut kas līdzīgs 1,4 ABC pie komandrindas. Tagad mēs spēsim radīt dažas pseidonīmi Kopš RV2 un RV3 nav Ļoti noderīgi vārdi. Mēs esam, tā vietā, saukšu tos failā un ārā failā. Tagad mēs ejam, lai pārliecinātos, ka Mūsu faktors bija faktiski derīga. Tātad, ja koeficients ir mazāks par vai vienāds ar nulle vai lielāks par 100, kā vienu spec, mums vajadzētu noraidīt šis faktors. Kad mēs esam pārliecināti, ka tas ir labi, tagad mēs varam atvērt n failu, un mums ir jāizdara pārliecināts, ka tas tika veiksmīgi atvērts. Ja tā nav, ka atgriezīsies null. Mēs ejam, lai atvērtu File. Un atkal, mēs vēlamies pārbaudīt, lai padarītu pārliecināts, ka tas ir veiksmīgi atvērts. Un, ja tā nav veiksmīgi atvērt, tad mums ir jābūt pārliecinātiem, lai aizvērtu n failu, kas sākotnēji veiksmīgi atvērta, vai arī mums ir atmiņas noplūde. Tāpēc tagad mēs ejam lasīt bitkarte faila galvene un bitmap info header no n faila. Mēs ejam, lai pārliecinātos, ka n fails bija derīga bitmap. OK. Tāpēc tagad mēs esam gatavojas sākt veikt dažas izmaiņas. Tāpēc, ka mēs ejam, mainās lietas, mēs vispirms vēlamies atcerēties vecais platums n faila. Mēs vēlamies atcerēties veco polsterējums n failu, izmantojot to pašu aprēķinu No copy.c. Un tagad mēs esam gatavojas mainīt bitmap info galvenes. Un tāpēc mēs esam reizinot gan platumu un augstumu ar faktoru, jo ka tas, ko mēs esam mērogošana līdz. Mēs ejam, lai noteiktu Jaunais polsterējums no lietas materiāliem izmantojot jaunu platumu. Un mēs ejam, lai noteiktu jaunu attēla izmēra, izmantojot vairākus bytes vienā rindā, kas notiek, lai būt pikseļu skaits minētajā rindā reizes lielāka par pikseli plus skaits no polsterējuma baitu beigās šīs rindas, un reizinot visu, kas ar rindu skaitu, kas mums ir. Tātad tas ir baitu skaits mums ir mūsu attēla datiem. Bf.Bfsize tagad būs skaitlis baitu mūsu attēla beta plus lielumu mūsu galvenes. Tāpēc plus izmērs bitmap failu galvenes un izmērs bitmap info galvenes. OK. Tātad tas ir tas mūsu galvenes. Mēs varam rakstīt failu galvu un info header mūsu out failu, un mēs esam labi. Tagad ir pienācis laiks, lai sāktu reāli rakstot pikseļu datus out failu. Mēs ejam, lai deklarēt buferi izmēru vecais platums RGB trīskāršojas, un mēs esam gatavojas atzīt mainīgo sauc rinda sastindzis, kas mēs spēsim sākotnēji noteikts vienāds ar negatīvu 1. Mēs redzam, ka mēs ejam, lai, izmantojot ka, lai sekotu tam, ko rinda mēs šobrīd esam piekrauts šajā buferi. OK. Tāpēc tagad atšķirībā no standarta izdevums, vietā, atkārtojot nekā pie in failu, mēs ejam, lai atkārtot pār otru rinda File un izdomāt kas rinda failā mēs vēlamies vietu šajā rindā out failā. Tātad, atkārtojot pār visiem rindas out failu, izmantojot jauno augstumu, mēs esam pirmais notiek, lai noteiktu rindu old failu mēs esam gatavojas izmantot, ko mēs esam gatavojas to darīt, ņemot vērā šo strāvu rindu dala ar koeficientu. Tā, kas notiek, lai dotu mums rindu vecajā failā, ko mēs vēlamies. Tāpēc tagad, ja rinda sastindzis nav vienāda veco y, mēs esam nāksies lasīt rindu ka mēs vēlamies mūsu cur rindu buferis. Tātad, kā mēs gatavojamies darīt? Pirmkārt, mēs ejam, lai noskaidrotu pozīcija, kas sākas šo rindu oriģinālo failu. Tāpēc šī nostāja būs garām visiem mūsu galvenes un Tagad pēdējo veco vec rindas. Un tā, cik daudz baitu ir vienā rindā? Atkal, lielums RGB trīsvietīgas reizes vecs platums plus vecā apdare, tā ka ir baitu skaitu vienā rindā. Un mēs gribam, lai izlaistu pagātnē veco vec rindas. Tāpēc mēs esam gatavojas f meklēt, un mēs esam izmantojot cenšas komplekts, lai sāktu no sākumā faila. Mēs ejam, lai f censties šajā amatā failā, liekot mums sākumā rindā mēs vēlamies lasīt mūsu bufera. Mēs ejam, lai uzstādītu rindu sastindzis vienāds ar veco y. Tāpēc tagad, ja mēs cilpu atpakaļ un mēs vēlamies, lai izmantot šo pašu rindu mūsu File, tad mēs nebrauksim, lai lasītu tas atkal nevajadzīgi. Tik tiešām, rinda sastindzis ir tikai optimizāciju. Visbeidzot, mēs ejam, lai izlasītu par Pašreizējā rinda vecais platums RGB trīskāršojas ka mēs vēlamies no sākotnējā faila. Tāpēc tagad Cur rinda satur pikseļi no oriģinālo failu, ka mēs vēlamies, lai rakstiet uz File. Tāpēc tagad, tāpat kā iepriekš, tā vietā, lai atkārtojot pār veco failu, mums vajag to atkārtot pār jaunajiem failiem rindās. Arī šeit, tā vietā, atkārtojot visas vecās pikseļu ka cur rindā, mēs vēlamies atkārtot pār visiem pikseļu mūsu jauno failu šajā īpaši rinda. Kāpēc mēs gribam to darīt? Jo mēs redzam, ka mēs neesam faktiski obligāti jāizmanto visiem pikseļu sākotnējā faila. Jo, ja mēs sarūk, mēs varētu tiešām vēlaties izlaist pikseļi. Un mēs redzam, ka šis - x dala ar koeficientu - cieši spoguļi šeit, kur mēs sakām y dala ar koeficientu, lai noskaidrotu, ka vecā y-th rinda atbilst y-th rinda šajā jaunajā failā. Tagad mēs esam gatavojas rakstīt visu šie pikseļi no vecā rindā mūsu jaunā rindā. Pēc tam, kad mēs esam darījuši, ka mums ir tikai nodot polsterējums beigās mūsu rindas un mēs cilpu atpakaļ un turpināt visas rindas mūsu jaunu failu. Gada beigās, mums ir nepieciešams slēgt mūsu veco failu, aizveriet savu jauno failu, un atgriešanās nulle, jo viss gāja labi. Mans vārds ir Rob, un tas bija Recess. [Mūzikas atskaņošanai]