>> [Mūzikas atskaņošanai]
>> ROB Bowden: Sveiki, es esmu Rob, pieņemsim izmēģināt šo par izmēru.
Tātad, mēs atkal sāksim ar būtībā kopija copy.c, un
veikt dažas izmaiņas.
Ņemiet uzreiz mēs redzam izmaiņas, ja nevis pārbaudīt, vai
argc nav vienāds 3, mēs gribam, lai pārbaudītu ja argc nav vienāds ar 4, jo
Tagad mēs esam ne tikai veikt kādā INFILE un outfile, bet mēs esam arī uzņemot
n, kas ir summa, ko mēs esam mērogošana oriģinālo attēlu,.
Pēc tam, kad mēs esam pārliecināti, ka mēs varam vienkārši pārvērst n līdz veselam skaitlim, izmantojot atoi.
>> Tātad, tagad mēs ejam, lai radītu dažas pseidonīmi, zvaniet argv 2 INFILE, un
argv 3 outfile, jo argv 2 un argv 3 nav ļoti noderīgi nosaukumi.
Tagad mēs vēlamies pārbaudīt, lai pārliecinātos, ka n robežās, mēs sagaidām, lai
spec nosaka, ka tad, ja tas ir mazāks par vai vienāds ar nulli, vai lielāks par 100,
tad tas ir nederīgs izmērus faktors, un mums vajadzētu brīdināt lietotāju par to.
>> Pēc tam, kad mēs esam tālāk visu, mēs varam beidzot atvērt mūsu INFILE, un mums ir nepieciešams
kļūdas pārbaudīt, lai pārliecinātos, ka atvēršana nav pārkāpusi kāda iemesla dēļ.
Mums arī ir nepieciešams, lai atvērtu mūsu outfile, un atkal kļūda pārbaudiet, lai pārliecinātos, ka
nav neizdoties kāda iemesla dēļ.
Bet ir pārliecināts, ja atvēršana outfile neizdevās, ka mums ir nepieciešams, lai aizvērtu
infile, kas jau ir atvērts.
>> Tātad, pieņemot, ka nav pārkāpusi, tad we're - tāpat kā copy.c, -
nolasīšu galvenē no INFILE.
Mēs ejam, lai pārliecinātos, ka tas ir derīgs bitmap, bet tagad mēs esam gatavojas darīt dažas
lietas mazliet atšķirīgi.
Tātad, pirmkārt, mēs esam gatavojas vēlaties atcerēties sākotnējo platumu un augstumu
no INFILE, jo mēs ejam uz var mainīt to uz OUTFILE.
Tāpēc tagad, atcerieties, ka dīvainu iemeslu dēļ bi.biheight, ir negatīvs, un
tāpēc faktiskais augstums, kas pozitīvi, mēs vēlaties veikt absolūto vērtību.
>> Tagad polsterējums būs vienādi aprēķins, kā tas bija copy.c,
izmantojot veco platumu, un tagad mēs esam tiešām mainīsies
Kas mūsu galvenes.
Tāpēc mēs ejam vairoties mūsu platumu līdz n, jo mēs esam mērogošana platumu līdz
n, reizināt augstumu ar n, jo mēs esam mērogošana ar n, un tagad mums ir
aprēķinu par jaunu polsterējumu kas pamatojas uz jauno platumu.
>> Tāpēc tagad mums ir nepieciešams kaut ko mainīt citās jomās mūsu galvenes.
Bi.biSizeImage vajadzētu būt size visu baitu pikseļiem
un polsterējums attēla.
Un tā izmērs ir vienā rindā vēlamos attēls ir lielums RGB triple, izmērs
par vienu pikseli, reizes skaits pikseļu pēc kārtas, kā arī polsterējums pie
rindas beigās.
Un tad mēs ejam, lai reizināt, ka līdz absolūtā vērtība mūsu augstumu, lai iegūtu
kopējais baitu skaits ar attēla datiem.
bf.bfSize ir tikai kopējais skaits baitu mūsu attēlu datu, lai
bi.biSizeImage, plus lielumu mūsu galvenes.
Tātad, pievienojot no lieluma bitkartes failu header, un izmērs bitmap info
header, OK.
Tātad tas ir viss, kas mums ir nepieciešams, lai mainās mūsu galvenes.
Tagad mēs rakstīt bitmap failu galvenes mūsu OUTFILE, un mūsu bitmap info
header mūsu OUTFILE, un tagad mēs esam gatavi sākt iet
pār faktisko pikseļi.
>> Tāpēc mēs vēlamies atkārtot vairāk Eiropas inFile ir skenēšanas līnijas.
Tāpēc mēs vēlamies atkārtot vairāk oldheight.
Tas ir iemesls, kāpēc mums vajadzēja atcerēties sākotnējā augstuma, pirms mēs to mainīt
un samazināts to ar n.
Tagad mēs esam gatavojas lasīt vienotu rindā INFILE uz
bufera izmēru oldwidth.
Tāpēc šeit mēs esam freading lielums RGB triple viena pikseļu, un veco platums
tos no INFILE mūsu bufera.
Un tas būs visu rindu šajā masīvā.
Tāpēc tagad mēs vēlamies atkārtot n reizes izdrukāt šo rindu mūsu OUTFILE n reizes.
Un tā tas ir tas, ko šī cilpa dara.
Šis iekšējais cilpa ir atkārtojot vairāk rindā sevi, pār masīvs, drukāšanas
katrs pikselis masīva n reizes.
Tā 0. Elements tiek drukāts n reizes, pirmais elements tiek
drukāts n reizes.
Un tas ir sava veida, kā mēs spēsim horizontāli ietaupījumus OUTFILE, un
šī cilpa, jo mēs esam looping n reizes, ir tas, kā mēs spēsim
vertikāli mērogā.
>> Šeit lejā, mēs redzam, ka mums ir nepieciešams, lai pievienotu polsterējums beigās katrā rindā.
Tas ir iemesls, kāpēc tas ir iekšā, lai cilpa kas ir izdrukāt n rindas tikko
šī rinda no INFILE.
Tad uz leju šeit, es esmu gatavojas izlaist polsterējums ar INFILE, jo pēc tam, kad
mēs esam darīts ar vienu rindu infile, mums nerūp
kāda polsterējums bija.
Mēs vienkārši vēlamies, lai nokļūtu otrajā rindā.
Un tad mēs cilpu atpakaļ un darīt visu tas atkal otrās rindas.
>> Visbeidzot, kad mēs esam darīts ar visu, kas, mēs varam aizvērt INFILE, close
outfile, un atgriešanās 0 jo mēs esam darījuši.
>> Mans vārds ir Rob, un tas bija izmērus.
>> [Mūzikas atskaņošanai]