1 00:00:00,000 --> 00:00:00,996 2 00:00:00,996 --> 00:00:12,470 >> [Mūzikas atskaņošanai] 3 00:00:12,470 --> 00:00:13,210 >> ROB BOWDEN: Hi. 4 00:00:13,210 --> 00:00:16,870 Es esmu Rob un ļaujiet lieluma līdz šai problēmai. 5 00:00:16,870 --> 00:00:20,990 Tāpēc mēs esam gatavojas sākt ar copy.c kā veidni, bet mēs ejam, lai būtu 6 00:00:20,990 --> 00:00:23,340 padarot diezgan maz izmaiņas. 7 00:00:23,340 --> 00:00:27,570 >> Tagad mēs redzam, mēs uzreiz padarot mainīt, ja mēs vairs pārbaudot 8 00:00:27,570 --> 00:00:31,560 par mūsu RXC nav vienāds 3, bet tagad mēs pārbaudīt RC nav vienāds 4. 9 00:00:31,560 --> 00:00:34,670 Tā mēs arī vēlamies iekļaut, jo papildinājums faila un no failiem 10 00:00:34,670 --> 00:00:39,550 argumenti, f, kas būs šo koeficients, ar kuru mēs esam mērogošana. 11 00:00:39,550 --> 00:00:45,430 >> Tātad, kad mēs esam pārliecināti, ka mēs vēlamies izmantot s skenēšanas f, lai pārvērstu string 12 00:00:45,430 --> 00:00:49,030 argv1 uz apgrozāmos līdzekļus. 13 00:00:49,030 --> 00:00:51,330 Un mēs ejam, lai saglabātu ka faktors. 14 00:00:51,330 --> 00:00:55,180 Šis papildu raksturs, ir pārliecināties, ka mēs faktiski ienāk 15 00:00:55,180 --> 00:00:59,200 kaut kas līdzīgs 1,4 ABC pie komandrindas. 16 00:00:59,200 --> 00:01:02,960 >> Tagad mēs spēsim radīt dažas pseidonīmi Kopš RV2 un RV3 nav 17 00:01:02,960 --> 00:01:04,310 Ļoti noderīgi vārdi. 18 00:01:04,310 --> 00:01:07,660 Mēs esam, tā vietā, saukšu tos failā un ārā failā. 19 00:01:07,660 --> 00:01:11,580 Tagad mēs ejam, lai pārliecinātos, ka Mūsu faktors bija faktiski derīga. 20 00:01:11,580 --> 00:01:16,330 Tātad, ja koeficients ir mazāks par vai vienāds ar nulle vai lielāks par 100, kā vienu 21 00:01:16,330 --> 00:01:19,660 spec, mums vajadzētu noraidīt šis faktors. 22 00:01:19,660 --> 00:01:23,890 >> Kad mēs esam pārliecināti, ka tas ir labi, tagad mēs varam atvērt n failu, un mums ir jāizdara 23 00:01:23,890 --> 00:01:25,950 pārliecināts, ka tas tika veiksmīgi atvērts. 24 00:01:25,950 --> 00:01:28,630 Ja tā nav, ka atgriezīsies null. 25 00:01:28,630 --> 00:01:30,390 Mēs ejam, lai atvērtu File. 26 00:01:30,390 --> 00:01:33,420 Un atkal, mēs vēlamies pārbaudīt, lai padarītu pārliecināts, ka tas ir veiksmīgi atvērts. 27 00:01:33,420 --> 00:01:37,270 Un, ja tā nav veiksmīgi atvērt, tad mums ir jābūt pārliecinātiem, lai aizvērtu 28 00:01:37,270 --> 00:01:40,870 n failu, kas sākotnēji veiksmīgi atvērta, vai arī mums ir 29 00:01:40,870 --> 00:01:42,600 atmiņas noplūde. 30 00:01:42,600 --> 00:01:46,350 >> Tāpēc tagad mēs ejam lasīt bitkarte faila galvene un bitmap info 31 00:01:46,350 --> 00:01:48,890 header no n faila. 32 00:01:48,890 --> 00:01:52,360 Mēs ejam, lai pārliecinātos, ka n fails bija derīga bitmap. 33 00:01:52,360 --> 00:01:52,640 OK. 34 00:01:52,640 --> 00:01:55,100 >> Tāpēc tagad mēs esam gatavojas sākt veikt dažas izmaiņas. 35 00:01:55,100 --> 00:01:58,840 Tāpēc, ka mēs ejam, mainās lietas, mēs vispirms vēlamies atcerēties 36 00:01:58,840 --> 00:02:01,510 vecais platums n faila. 37 00:02:01,510 --> 00:02:05,160 Mēs vēlamies atcerēties veco polsterējums n failu, izmantojot to pašu aprēķinu 38 00:02:05,160 --> 00:02:06,990 No copy.c. 39 00:02:06,990 --> 00:02:09,840 >> Un tagad mēs esam gatavojas mainīt bitmap info galvenes. 40 00:02:09,840 --> 00:02:13,630 Un tāpēc mēs esam reizinot gan platumu un augstumu ar faktoru, jo 41 00:02:13,630 --> 00:02:15,750 ka tas, ko mēs esam mērogošana līdz. 42 00:02:15,750 --> 00:02:18,420 Mēs ejam, lai noteiktu Jaunais polsterējums no lietas materiāliem 43 00:02:18,420 --> 00:02:21,140 izmantojot jaunu platumu. 44 00:02:21,140 --> 00:02:27,330 Un mēs ejam, lai noteiktu jaunu attēla izmēra, izmantojot vairākus 45 00:02:27,330 --> 00:02:31,610 bytes vienā rindā, kas notiek, lai būt pikseļu skaits minētajā rindā 46 00:02:31,610 --> 00:02:35,960 reizes lielāka par pikseli plus skaits no polsterējuma baitu beigās 47 00:02:35,960 --> 00:02:40,310 šīs rindas, un reizinot visu, kas ar rindu skaitu, kas mums ir. 48 00:02:40,310 --> 00:02:43,800 Tātad tas ir baitu skaits mums ir mūsu attēla datiem. 49 00:02:43,800 --> 00:02:48,190 >> Bf.Bfsize tagad būs skaitlis baitu mūsu attēla beta plus 50 00:02:48,190 --> 00:02:49,350 lielumu mūsu galvenes. 51 00:02:49,350 --> 00:02:53,910 Tāpēc plus izmērs bitmap failu galvenes un izmērs bitmap info galvenes. 52 00:02:53,910 --> 00:02:54,510 OK. 53 00:02:54,510 --> 00:02:56,440 Tātad tas ir tas mūsu galvenes. 54 00:02:56,440 --> 00:02:59,030 Mēs varam rakstīt failu galvu un info header mūsu out 55 00:02:59,030 --> 00:03:01,590 failu, un mēs esam labi. 56 00:03:01,590 --> 00:03:03,800 >> Tagad ir pienācis laiks, lai sāktu reāli rakstot pikseļu 57 00:03:03,800 --> 00:03:05,120 datus out failu. 58 00:03:05,120 --> 00:03:10,460 Mēs ejam, lai deklarēt buferi izmēru vecais platums RGB trīskāršojas, un mēs esam 59 00:03:10,460 --> 00:03:13,790 gatavojas atzīt mainīgo sauc rinda sastindzis, kas mēs spēsim 60 00:03:13,790 --> 00:03:15,640 sākotnēji noteikts vienāds ar negatīvu 1. 61 00:03:15,640 --> 00:03:19,090 Mēs redzam, ka mēs ejam, lai, izmantojot ka, lai sekotu tam, ko 62 00:03:19,090 --> 00:03:22,640 rinda mēs šobrīd esam piekrauts šajā buferi. 63 00:03:22,640 --> 00:03:23,290 OK. 64 00:03:23,290 --> 00:03:28,750 >> Tāpēc tagad atšķirībā no standarta izdevums, vietā, atkārtojot nekā pie in 65 00:03:28,750 --> 00:03:32,900 failu, mēs ejam, lai atkārtot pār otru rinda File un izdomāt 66 00:03:32,900 --> 00:03:38,130 kas rinda failā mēs vēlamies vietu šajā rindā out failā. 67 00:03:38,130 --> 00:03:44,930 Tātad, atkārtojot pār visiem rindas out failu, izmantojot jauno augstumu, mēs esam pirmais 68 00:03:44,930 --> 00:03:48,890 notiek, lai noteiktu rindu old failu mēs esam gatavojas izmantot, ko mēs esam 69 00:03:48,890 --> 00:03:53,560 gatavojas to darīt, ņemot vērā šo strāvu rindu dala ar koeficientu. 70 00:03:53,560 --> 00:03:58,000 Tā, kas notiek, lai dotu mums rindu vecajā failā, ko mēs vēlamies. 71 00:03:58,000 --> 00:04:03,310 >> Tāpēc tagad, ja rinda sastindzis nav vienāda veco y, mēs esam nāksies lasīt rindu 72 00:04:03,310 --> 00:04:05,940 ka mēs vēlamies mūsu cur rindu buferis. 73 00:04:05,940 --> 00:04:07,700 Tātad, kā mēs gatavojamies darīt? 74 00:04:07,700 --> 00:04:11,650 Pirmkārt, mēs ejam, lai noskaidrotu pozīcija, kas sākas šo rindu 75 00:04:11,650 --> 00:04:13,100 oriģinālo failu. 76 00:04:13,100 --> 00:04:18,630 Tāpēc šī nostāja būs garām visiem mūsu galvenes un 77 00:04:18,630 --> 00:04:21,589 Tagad pēdējo veco vec rindas. 78 00:04:21,589 --> 00:04:23,880 >> Un tā, cik daudz baitu ir vienā rindā? 79 00:04:23,880 --> 00:04:28,740 Atkal, lielums RGB trīsvietīgas reizes vecs platums plus vecā apdare, tā ka ir 80 00:04:28,740 --> 00:04:30,640 baitu skaitu vienā rindā. 81 00:04:30,640 --> 00:04:33,680 Un mēs gribam, lai izlaistu pagātnē veco vec rindas. 82 00:04:33,680 --> 00:04:37,580 Tāpēc mēs esam gatavojas f meklēt, un mēs esam izmantojot cenšas komplekts, lai sāktu no 83 00:04:37,580 --> 00:04:39,100 sākumā faila. 84 00:04:39,100 --> 00:04:42,740 Mēs ejam, lai f censties šajā amatā failā, liekot mums 85 00:04:42,740 --> 00:04:46,500 sākumā rindā mēs vēlamies lasīt mūsu bufera. 86 00:04:46,500 --> 00:04:48,510 >> Mēs ejam, lai uzstādītu rindu sastindzis vienāds ar veco y. 87 00:04:48,510 --> 00:04:53,080 Tāpēc tagad, ja mēs cilpu atpakaļ un mēs vēlamies, lai izmantot šo pašu rindu mūsu File, 88 00:04:53,080 --> 00:04:55,970 tad mēs nebrauksim, lai lasītu tas atkal nevajadzīgi. 89 00:04:55,970 --> 00:04:59,310 Tik tiešām, rinda sastindzis ir tikai optimizāciju. 90 00:04:59,310 --> 00:05:05,500 >> Visbeidzot, mēs ejam, lai izlasītu par Pašreizējā rinda vecais platums RGB trīskāršojas 91 00:05:05,500 --> 00:05:08,040 ka mēs vēlamies no sākotnējā faila. 92 00:05:08,040 --> 00:05:12,270 Tāpēc tagad Cur rinda satur pikseļi no oriģinālo failu, ka mēs vēlamies, lai 93 00:05:12,270 --> 00:05:14,200 rakstiet uz File. 94 00:05:14,200 --> 00:05:18,960 Tāpēc tagad, tāpat kā iepriekš, tā vietā, lai atkārtojot pār veco failu, mums vajag 95 00:05:18,960 --> 00:05:22,560 to atkārtot pār jaunajiem failiem rindās. 96 00:05:22,560 --> 00:05:27,450 Arī šeit, tā vietā, atkārtojot visas vecās pikseļu ka cur rindā, 97 00:05:27,450 --> 00:05:31,210 mēs vēlamies atkārtot pār visiem pikseļu mūsu jauno failu šajā 98 00:05:31,210 --> 00:05:32,480 īpaši rinda. 99 00:05:32,480 --> 00:05:34,140 >> Kāpēc mēs gribam to darīt? 100 00:05:34,140 --> 00:05:38,960 Jo mēs redzam, ka mēs neesam faktiski obligāti jāizmanto visiem 101 00:05:38,960 --> 00:05:41,020 pikseļu sākotnējā faila. 102 00:05:41,020 --> 00:05:46,630 Jo, ja mēs sarūk, mēs varētu tiešām vēlaties izlaist pikseļi. 103 00:05:46,630 --> 00:05:48,090 Un mēs redzam, ka šis - 104 00:05:48,090 --> 00:05:49,690 x dala ar koeficientu - 105 00:05:49,690 --> 00:05:55,620 cieši spoguļi šeit, kur mēs sakām y dala ar koeficientu, lai noskaidrotu, ka 106 00:05:55,620 --> 00:06:02,480 vecā y-th rinda atbilst y-th rinda šajā jaunajā failā. 107 00:06:02,480 --> 00:06:05,880 >> Tagad mēs esam gatavojas rakstīt visu šie pikseļi no vecā rindā 108 00:06:05,880 --> 00:06:07,440 mūsu jaunā rindā. 109 00:06:07,440 --> 00:06:10,890 Pēc tam, kad mēs esam darījuši, ka mums ir tikai nodot polsterējums beigās mūsu rindas 110 00:06:10,890 --> 00:06:15,540 un mēs cilpu atpakaļ un turpināt visas rindas mūsu jaunu failu. 111 00:06:15,540 --> 00:06:19,390 Gada beigās, mums ir nepieciešams slēgt mūsu veco failu, aizveriet savu jauno failu, un atgriešanās 112 00:06:19,390 --> 00:06:21,540 nulle, jo viss gāja labi. 113 00:06:21,540 --> 00:06:24,220 >> Mans vārds ir Rob, un tas bija Recess. 114 00:06:24,220 --> 00:06:29,184 >> [Mūzikas atskaņošanai]