1 00:00:00,000 --> 00:00:12,240 >> [Mūzikas atskaņošanai] 2 00:00:12,240 --> 00:00:15,870 >> ROB Bowden: Sveiki, es esmu Rob, pieņemsim izmēģināt šo par izmēru. 3 00:00:15,870 --> 00:00:21,100 Tātad, mēs atkal sāksim ar būtībā kopija copy.c, un 4 00:00:21,100 --> 00:00:22,860 veikt dažas izmaiņas. 5 00:00:22,860 --> 00:00:26,280 Ņemiet uzreiz mēs redzam izmaiņas, ja nevis pārbaudīt, vai 6 00:00:26,280 --> 00:00:30,440 argc nav vienāds 3, mēs gribam, lai pārbaudītu ja argc nav vienāds ar 4, jo 7 00:00:30,440 --> 00:00:34,350 Tagad mēs esam ne tikai veikt kādā INFILE un outfile, bet mēs esam arī uzņemot 8 00:00:34,350 --> 00:00:38,980 n, kas ir summa, ko mēs esam mērogošana oriģinālo attēlu,. 9 00:00:38,980 --> 00:00:44,340 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. 10 00:00:44,340 --> 00:00:48,760 >> Tātad, tagad mēs ejam, lai radītu dažas pseidonīmi, zvaniet argv 2 INFILE, un 11 00:00:48,760 --> 00:00:54,240 argv 3 outfile, jo argv 2 un argv 3 nav ļoti noderīgi nosaukumi. 12 00:00:54,240 --> 00:00:58,510 Tagad mēs vēlamies pārbaudīt, lai pārliecinātos, ka n robežās, mēs sagaidām, lai 13 00:00:58,510 --> 00:01:02,910 spec nosaka, ka tad, ja tas ir mazāks par vai vienāds ar nulli, vai lielāks par 100, 14 00:01:02,910 --> 00:01:08,580 tad tas ir nederīgs izmērus faktors, un mums vajadzētu brīdināt lietotāju par to. 15 00:01:08,580 --> 00:01:13,090 >> 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 16 00:01:13,090 --> 00:01:16,270 kļūdas pārbaudīt, lai pārliecinātos, ka atvēršana nav pārkāpusi kāda iemesla dēļ. 17 00:01:16,270 --> 00:01:19,860 Mums arī ir nepieciešams, lai atvērtu mūsu outfile, un atkal kļūda pārbaudiet, lai pārliecinātos, ka 18 00:01:19,860 --> 00:01:21,250 nav neizdoties kāda iemesla dēļ. 19 00:01:21,250 --> 00:01:26,270 Bet ir pārliecināts, ja atvēršana outfile neizdevās, ka mums ir nepieciešams, lai aizvērtu 20 00:01:26,270 --> 00:01:29,040 infile, kas jau ir atvērts. 21 00:01:29,040 --> 00:01:33,690 >> Tātad, pieņemot, ka nav pārkāpusi, tad we're - tāpat kā copy.c, - 22 00:01:33,690 --> 00:01:36,140 nolasīšu galvenē no INFILE. 23 00:01:36,140 --> 00:01:40,130 Mēs ejam, lai pārliecinātos, ka tas ir derīgs bitmap, bet tagad mēs esam gatavojas darīt dažas 24 00:01:40,130 --> 00:01:41,620 lietas mazliet atšķirīgi. 25 00:01:41,620 --> 00:01:44,870 Tātad, pirmkārt, mēs esam gatavojas vēlaties atcerēties sākotnējo platumu un augstumu 26 00:01:44,870 --> 00:01:48,290 no INFILE, jo mēs ejam uz var mainīt to uz OUTFILE. 27 00:01:48,290 --> 00:01:53,890 Tāpēc tagad, atcerieties, ka dīvainu iemeslu dēļ bi.biheight, ir negatīvs, un 28 00:01:53,890 --> 00:01:58,670 tāpēc faktiskais augstums, kas pozitīvi, mēs vēlaties veikt absolūto vērtību. 29 00:01:58,670 --> 00:02:02,580 >> Tagad polsterējums būs vienādi aprēķins, kā tas bija copy.c, 30 00:02:02,580 --> 00:02:06,060 izmantojot veco platumu, un tagad mēs esam tiešām mainīsies 31 00:02:06,060 --> 00:02:07,320 Kas mūsu galvenes. 32 00:02:07,320 --> 00:02:11,200 Tāpēc mēs ejam vairoties mūsu platumu līdz n, jo mēs esam mērogošana platumu līdz 33 00:02:11,200 --> 00:02:15,100 n, reizināt augstumu ar n, jo mēs esam mērogošana ar n, un tagad mums ir 34 00:02:15,100 --> 00:02:19,250 aprēķinu par jaunu polsterējumu kas pamatojas uz jauno platumu. 35 00:02:19,250 --> 00:02:21,840 >> Tāpēc tagad mums ir nepieciešams kaut ko mainīt citās jomās mūsu galvenes. 36 00:02:21,840 --> 00:02:26,890 Bi.biSizeImage vajadzētu būt size visu baitu pikseļiem 37 00:02:26,890 --> 00:02:28,520 un polsterējums attēla. 38 00:02:28,520 --> 00:02:34,190 Un tā izmērs ir vienā rindā vēlamos attēls ir lielums RGB triple, izmērs 39 00:02:34,190 --> 00:02:39,430 par vienu pikseli, reizes skaits pikseļu pēc kārtas, kā arī polsterējums pie 40 00:02:39,430 --> 00:02:40,910 rindas beigās. 41 00:02:40,910 --> 00:02:45,200 Un tad mēs ejam, lai reizināt, ka līdz absolūtā vērtība mūsu augstumu, lai iegūtu 42 00:02:45,200 --> 00:02:48,350 kopējais baitu skaits ar attēla datiem. 43 00:02:48,350 --> 00:02:53,050 bf.bfSize ir tikai kopējais skaits baitu mūsu attēlu datu, lai 44 00:02:53,050 --> 00:02:56,530 bi.biSizeImage, plus lielumu mūsu galvenes. 45 00:02:56,530 --> 00:02:59,850 Tātad, pievienojot no lieluma bitkartes failu header, un izmērs bitmap info 46 00:02:59,850 --> 00:03:00,800 header, OK. 47 00:03:00,800 --> 00:03:03,170 Tātad tas ir viss, kas mums ir nepieciešams, lai mainās mūsu galvenes. 48 00:03:03,170 --> 00:03:07,020 Tagad mēs rakstīt bitmap failu galvenes mūsu OUTFILE, un mūsu bitmap info 49 00:03:07,020 --> 00:03:09,880 header mūsu OUTFILE, un tagad mēs esam gatavi sākt iet 50 00:03:09,880 --> 00:03:11,990 pār faktisko pikseļi. 51 00:03:11,990 --> 00:03:15,720 >> Tāpēc mēs vēlamies atkārtot vairāk Eiropas inFile ir skenēšanas līnijas. 52 00:03:15,720 --> 00:03:17,730 Tāpēc mēs vēlamies atkārtot vairāk oldheight. 53 00:03:17,730 --> 00:03:20,830 Tas ir iemesls, kāpēc mums vajadzēja atcerēties sākotnējā augstuma, pirms mēs to mainīt 54 00:03:20,830 --> 00:03:23,040 un samazināts to ar n. 55 00:03:23,040 --> 00:03:27,810 Tagad mēs esam gatavojas lasīt vienotu rindā INFILE uz 56 00:03:27,810 --> 00:03:30,630 bufera izmēru oldwidth. 57 00:03:30,630 --> 00:03:36,190 Tāpēc šeit mēs esam freading lielums RGB triple viena pikseļu, un veco platums 58 00:03:36,190 --> 00:03:39,760 tos no INFILE mūsu bufera. 59 00:03:39,760 --> 00:03:43,480 Un tas būs visu rindu šajā masīvā. 60 00:03:43,480 --> 00:03:50,390 Tāpēc tagad mēs vēlamies atkārtot n reizes izdrukāt šo rindu mūsu OUTFILE n reizes. 61 00:03:50,390 --> 00:03:52,510 Un tā tas ir tas, ko šī cilpa dara. 62 00:03:52,510 --> 00:03:57,910 Šis iekšējais cilpa ir atkārtojot vairāk rindā sevi, pār masīvs, drukāšanas 63 00:03:57,910 --> 00:04:00,710 katrs pikselis masīva n reizes. 64 00:04:00,710 --> 00:04:04,510 Tā 0. Elements tiek drukāts n reizes, pirmais elements tiek 65 00:04:04,510 --> 00:04:05,660 drukāts n reizes. 66 00:04:05,660 --> 00:04:10,820 Un tas ir sava veida, kā mēs spēsim horizontāli ietaupījumus OUTFILE, un 67 00:04:10,820 --> 00:04:13,390 šī cilpa, jo mēs esam looping n reizes, ir tas, kā mēs spēsim 68 00:04:13,390 --> 00:04:15,580 vertikāli mērogā. 69 00:04:15,580 --> 00:04:19,850 >> Šeit lejā, mēs redzam, ka mums ir nepieciešams, lai pievienotu polsterējums beigās katrā rindā. 70 00:04:19,850 --> 00:04:25,050 Tas ir iemesls, kāpēc tas ir iekšā, lai cilpa kas ir izdrukāt n rindas tikko 71 00:04:25,050 --> 00:04:28,400 šī rinda no INFILE. 72 00:04:28,400 --> 00:04:32,150 Tad uz leju šeit, es esmu gatavojas izlaist polsterējums ar INFILE, jo pēc tam, kad 73 00:04:32,150 --> 00:04:34,560 mēs esam darīts ar vienu rindu infile, mums nerūp 74 00:04:34,560 --> 00:04:35,290 kāda polsterējums bija. 75 00:04:35,290 --> 00:04:37,110 Mēs vienkārši vēlamies, lai nokļūtu otrajā rindā. 76 00:04:37,110 --> 00:04:40,870 Un tad mēs cilpu atpakaļ un darīt visu tas atkal otrās rindas. 77 00:04:40,870 --> 00:04:44,406 >> Visbeidzot, kad mēs esam darīts ar visu, kas, mēs varam aizvērt INFILE, close 78 00:04:44,406 --> 00:04:47,430 outfile, un atgriešanās 0 jo mēs esam darījuši. 79 00:04:47,430 --> 00:04:50,330 >> Mans vārds ir Rob, un tas bija izmērus. 80 00:04:50,330 --> 00:04:54,934 >> [Mūzikas atskaņošanai]