1 00:00:00,000 --> 00:00:02,700 [Powered by Google Translate] [Walkthrough - Tatizo Set 4] 2 00:00:02,700 --> 00:00:05,000 [Zamyla Chan - Chuo Kikuu cha Harvard] 3 00:00:05,000 --> 00:00:07,340 [Hii ni CS50. - CS50.TV] 4 00:00:08,210 --> 00:00:11,670 Wote haki. Hello, kila mtu, na kuwakaribisha kwa walkthrough 4. 5 00:00:11,670 --> 00:00:14,270 >> Leo pset yetu ni Forensics. 6 00:00:14,270 --> 00:00:18,080 Forensics ni pset kweli fun kwamba inahusisha kushughulika na files bitmap 7 00:00:18,080 --> 00:00:21,550 kugundua waliofanya uhalifu. 8 00:00:21,550 --> 00:00:24,200 Kisha tunakwenda resize files baadhi bitmap, 9 00:00:24,200 --> 00:00:27,780 basi tuko pia kwenda kukabiliana na sehemu ya kweli fun kuitwa Kuokoa, 10 00:00:27,780 --> 00:00:31,160 ambayo sisi ni kimsingi kukabidhiwa kadi ya kumbukumbu 11 00:00:31,160 --> 00:00:34,350 ambayo mtu ana ajali ilifutwa yote ya faili zao, 12 00:00:34,350 --> 00:00:38,860 na sisi ni aliuliza kuokoa files wale. 13 00:00:38,860 --> 00:00:42,910 >> Lakini kwanza, kabla ya sisi kupata katika pset, mimi kwa kweli nataka tu kumpongeza kila mtu. 14 00:00:42,910 --> 00:00:45,230 Sisi ni kuhusu saa midpoint ya kozi hii. 15 00:00:45,230 --> 00:00:50,070 Quiz 0 nyuma yetu, na sisi ni saa pset4, hivyo kimsingi, sisi ni nusu. 16 00:00:50,070 --> 00:00:55,490 Tumekuwa kuja njia ya muda mrefu kama wewe kuangalia nyuma psets yako, pset0 na pset1, 17 00:00:55,490 --> 00:00:57,300 hivyo kumpongeza mwenyewe juu ya kwamba, 18 00:00:57,300 --> 00:01:00,760 na sisi ni kwenda kupata katika baadhi ya mambo kweli fun. 19 00:01:00,760 --> 00:01:07,070 >> Hivyo toolbox yetu kwa pset hii, tena, badala ya mbio Sudo yum-y update, 20 00:01:07,070 --> 00:01:13,890 sisi ni uwezo wa kukimbia tu update50 kama wewe ni katika toleo 17.3 na juu ya appliance. 21 00:01:13,890 --> 00:01:17,380 Hivyo kuwa na uhakika ya kuendesha update50 - ni rahisi sana, wachache chini ya wahusika - 22 00:01:17,380 --> 00:01:20,640 kuhakikisha kwamba uko katika toleo la karibuni la appliance. 23 00:01:20,640 --> 00:01:25,410 Hasa ni muhimu update50 wakati sisi kuanza kutumia CS50 Check. 24 00:01:25,410 --> 00:01:28,700 Hivyo kuhakikisha kwamba kufanya hivyo. 25 00:01:28,700 --> 00:01:30,760 >> Kwa sehemu zote kwa pset hii, 26 00:01:30,760 --> 00:01:34,350 tunakwenda kuwa kushughulika na pembejeo faili na matokeo, faili I / O. 27 00:01:34,350 --> 00:01:38,140 Sisi ni kwenda kuwa kwenda juu ya mengi ya mipango ya kwamba kukabiliana na arrays 28 00:01:38,140 --> 00:01:40,350 akizungumzia files na mambo kama hayo, 29 00:01:40,350 --> 00:01:43,050 hivyo tunataka kuhakikisha kwamba sisi ni kweli familiar na starehe 30 00:01:43,050 --> 00:01:47,990 kushughulika na jinsi ya pembejeo na pato katika files. 31 00:01:47,990 --> 00:01:52,080 >> Katika code usambazaji kwa pset hii ni faili inayoitwa copy.c, 32 00:01:52,080 --> 00:01:55,280 na kwamba ni nini sisi ni kwenda kupata ni kwenda kuwa kweli muhimu kwetu 33 00:01:55,280 --> 00:02:00,340 kwa sababu tunakwenda kuishia kweli kuiga faili copy.c 34 00:02:00,340 --> 00:02:05,350 na tu Kubadili ni kidogo kuweza kufikia kwanza sehemu ya 2 ya kuweka tatizo. 35 00:02:05,350 --> 00:02:09,030 >> Na hivyo basi kama nilivyoeleza hapo awali, sisi ni kushughulika na bitmaps kama vile JPEGs. 36 00:02:09,030 --> 00:02:13,170 Hivyo kweli kuelewa muundo wa jinsi files wale ni kupangwa, 37 00:02:13,170 --> 00:02:16,170 jinsi gani tunaweza kweli kutafsiri sekunde 0 na 1s katika structs 38 00:02:16,170 --> 00:02:19,040 na mambo ambayo tunaweza kweli kuelewa na kutafsiri na kuhariri, 39 00:02:19,040 --> 00:02:21,000 kwamba itakuwa kweli muhimu, 40 00:02:21,000 --> 00:02:25,970 hivyo kwenda katika JPEG na files bitmap na kuelewa muundo wa wale. 41 00:02:25,970 --> 00:02:30,780 >> Pset4, kama kawaida, kuanza na sehemu ya maswali. 42 00:02:30,780 --> 00:02:36,600 Wale atapambana na faili I / O na wewe kupata accustomed kwamba. 43 00:02:36,600 --> 00:02:42,520 Kisha sehemu 1 ni Whodunit, ambayo wewe ni kupewa faili bitmap 44 00:02:42,520 --> 00:02:45,630 kwamba inaonekana kama aina ya dots nyekundu yote juu ya. 45 00:02:45,630 --> 00:02:52,180 Na kisha kimsingi nini sisi ni kwenda kufanya ni kuchukua faili hii na tu hariri ni kidogo 46 00:02:52,180 --> 00:02:54,010 katika toleo kwamba tunaweza kusoma. 47 00:02:54,010 --> 00:02:56,000 Kimsingi, mara sisi kumaliza, tutaweza kuwa na faili moja, 48 00:02:56,000 --> 00:03:02,630 ila tutaweza kuwa na uwezo wa kuona ujumbe siri siri kwa wale wote dots nyekundu. 49 00:03:02,630 --> 00:03:07,310 Kisha resize ni mpango kwamba, kutokana na faili 50 00:03:07,310 --> 00:03:11,490 na kisha kupewa jina la faili kwamba matokeo na kisha kupewa namba kama vile, 51 00:03:11,490 --> 00:03:16,850 mapenzi kweli resize kwamba bitmap na thamani kwamba integer. 52 00:03:16,850 --> 00:03:19,240 Kisha mwisho, tuna pset ya Kuokoa. 53 00:03:19,240 --> 00:03:24,160 Tumepewa kadi ya kumbukumbu na kisha kuwa na kupona zote za picha 54 00:03:24,160 --> 00:03:25,920 ambayo yamekuwa ajali imefutwa, 55 00:03:25,920 --> 00:03:31,420 lakini, kama tutaweza kujifunza, si kweli ilifutwa na kuondolewa kutoka faili; 56 00:03:31,420 --> 00:03:38,470 sisi tu aina ya waliopotea ambapo walikuwa katika faili, lakini sisi ni anaenda kuokoa kwamba. 57 00:03:38,470 --> 00:03:44,950 >> Mkuu. Hivyo kwenda katika faili I / O hasa, haya ni orodha nzima ya kazi ya kwamba wewe utakuwa kutumia. 58 00:03:44,950 --> 00:03:49,840 Tayari umeziona kidogo misingi ya fopen, fread, na fwrite, 59 00:03:49,840 --> 00:03:54,350 lakini sisi ni kwenda kuangalia zaidi katika baadhi ya faili I / O kazi kama vile fputc, 60 00:03:54,350 --> 00:03:56,930 ambayo wewe andika tu mhusika mmoja kwa wakati, 61 00:03:56,930 --> 00:04:02,000 kwa fseek, ambapo aina ya hoja nafasi faili kiashiria mbele na nyuma, 62 00:04:02,000 --> 00:04:05,770 na kisha baadhi ya watu wengine. Lakini tutaweza kwenda katika kwamba kidogo baadaye wakati pset. 63 00:04:08,050 --> 00:04:13,100 >> Hivyo kwanza, tu kupata ndani ya faili I / O kabla ya sisi kwenda katika pset, 64 00:04:13,100 --> 00:04:19,860 kufungua faili, kwa mfano, una nini cha kufanya ni kweli kuweka pointer faili hilo. 65 00:04:19,860 --> 00:04:22,710 Hivyo tuna * JALADA pointer. 66 00:04:22,710 --> 00:04:27,140 Katika kesi hiyo, mimi nina wito ni katika pointer sababu itakuja kuwa infile yangu. 67 00:04:27,140 --> 00:04:33,340 Na hivyo mimi nina kwenda kutumia fopen kazi na kisha jina la faili 68 00:04:33,340 --> 00:04:36,360 na kisha mode ambayo mimi nina kwenda kuwa kushughulika na faili. 69 00:04:36,360 --> 00:04:42,080 Hivyo kuna "r" katika kesi hii kwa kusoma, "w" kwa maandishi, na kisha "a" kwa appending. 70 00:04:42,080 --> 00:04:44,270 Kwa mfano, wakati wewe ni kushughulika na infile 71 00:04:44,270 --> 00:04:47,310 na wote unataka kufanya ni kusoma na bits ka kuhifadhiwa huko, 72 00:04:47,310 --> 00:04:50,420 basi pengine wewe kwenda kutaka kutumia "r" kama mode yako. 73 00:04:50,420 --> 00:04:54,520 Wakati unataka kweli kuandika, aina ya kufanya faili mpya, 74 00:04:54,520 --> 00:04:57,220 basi nini tunakwenda kufanya ni tunakwenda kufungua faili mpya 75 00:04:57,220 --> 00:05:02,410 na kutumia "w" mode kwa ajili ya kuandika. 76 00:05:02,410 --> 00:05:07,540 >> Hivyo basi wakati wewe ni kweli ya kusoma katika files, muundo ni kama ifuatavyo. 77 00:05:07,540 --> 00:05:14,930 Kwanza wewe ni pamoja pointer struct kwamba mapenzi yana ka kwamba wewe ni kusoma. 78 00:05:14,930 --> 00:05:19,830 Ili kwenda kuwa mahali mwisho ya ka kwamba wewe ni kusoma. 79 00:05:19,830 --> 00:05:23,360 Wewe kisha kwenda zinaonyesha ukubwa, kama kimsingi ngapi ka 80 00:05:23,360 --> 00:05:30,100 mpango wako ana kusoma katika na faili, ukubwa kimsingi moja kipengele ni, 81 00:05:30,100 --> 00:05:32,620 na kisha utaenda bayana jinsi wengi vipengele unataka kusoma. 82 00:05:32,620 --> 00:05:34,980 Na kisha hatimaye, una kujua ambapo wewe ni kusoma kutoka, 83 00:05:34,980 --> 00:05:37,580 ili kwenda kuwa pointer yako katika. 84 00:05:37,580 --> 00:05:41,780 Mimi rangi-coded haya kwa sababu fread pia ni sawa na fwrite, 85 00:05:41,780 --> 00:05:47,050 ila wewe unataka kuhakikisha kwamba matumizi ili haki, 86 00:05:47,050 --> 00:05:51,960 kuhakikisha kwamba wewe ni kweli kuandika au kusoma kutoka faili haki. 87 00:05:54,910 --> 00:05:58,610 >> Hivyo basi kama kabla, kama tuna kawaida ya kipengele kama vile idadi ya vipengele, 88 00:05:58,610 --> 00:06:00,600 basi tunaweza kucheza karibu hapa kidogo. 89 00:06:00,600 --> 00:06:06,810 Sema nina struct DOG na hivyo basi mimi nataka kusoma mbwa wawili kwa wakati. 90 00:06:06,810 --> 00:06:12,450 Nini mimi naweza kufanya ni kusema ukubwa wa kipengele moja ni kwenda kuwa ukubwa wa DOG moja 91 00:06:12,450 --> 00:06:14,770 na mimi naenda kwa kweli kusoma wawili. 92 00:06:14,770 --> 00:06:18,290 Vinginevyo, kitu ambacho ninaweza kufanya ni kusema mimi tu kwenda kusoma moja ya kipengele 93 00:06:18,290 --> 00:06:21,340 na kwamba moja ya kipengele ni kwenda kuwa ukubwa wa mbwa wawili. 94 00:06:21,340 --> 00:06:24,320 Basi hiyo ni sawa jinsi gani unaweza aina ya kucheza karibu na ukubwa na idadi 95 00:06:24,320 --> 00:06:28,250 kutegemea nini zaidi Intuitive na wewe. 96 00:06:28,250 --> 00:06:30,810 >> Wote haki. Hivyo sasa sisi kupata files kuandika. 97 00:06:30,810 --> 00:06:36,880 Wakati unataka kuandika kwenye faili, hoja ya kwanza ni kweli ambapo wewe ni kusoma kutoka. 98 00:06:36,880 --> 00:06:42,050 Basi hiyo ni kimsingi data kwamba wewe ni kwenda kuandika ndani ya faili, 99 00:06:42,050 --> 00:06:44,490 ambayo ni pointer nje mwishoni. 100 00:06:44,490 --> 00:06:47,670 Hivyo wakati wewe ni kushughulika na pset, kuhakikisha huna kupata kuchanganyikiwa. 101 00:06:47,670 --> 00:06:50,480 Labda kuwa na upande ufafanuzi kwa upande. 102 00:06:50,480 --> 00:06:58,090 Unaweza kuvuta ufafanuzi juu katika mwongozo na kuandika mtu na kisha fwrite, kwa mfano, 103 00:06:58,090 --> 00:06:59,950 katika terminal, au unaweza rejea nyuma kwenye slide huu 104 00:06:59,950 --> 00:07:03,570 na kuhakikisha kwamba unatumia moja ya haki. 105 00:07:03,570 --> 00:07:08,700 Hivyo tena, kwa fwrite, wakati una faili kwamba unataka kuandika katika, 106 00:07:08,700 --> 00:07:14,290 ambayo inaenda kuwa hoja ya mwisho na kwamba itakuja kuwa pointer faili hilo. 107 00:07:14,290 --> 00:07:18,670 Hivyo basi hiyo ni jinsi sisi kukabiliana na kuandika labda bytes kadhaa kwa wakati, 108 00:07:18,670 --> 00:07:21,820 lakini kusema unataka kuandika tu katika tabia tu mmoja. 109 00:07:21,820 --> 00:07:25,940 Kama tutaweza kuona baadaye katika mfano huu, katika bitmaps sisi itabidi kutumia. 110 00:07:25,940 --> 00:07:32,180 Kwamba wakati tunaweza kutumia fputc, kimsingi kuweka tu mhusika mmoja kwa wakati, CHR, 111 00:07:32,180 --> 00:07:37,050 ndani ya pointer faili, na kwamba ni wetu nje pointer huko. 112 00:07:38,700 --> 00:07:41,560 Hivyo basi popote kutafuta au kuandika kwenye faili, 113 00:07:41,560 --> 00:07:44,690 faili ni kuweka wimbo wa tulipo. 114 00:07:44,690 --> 00:07:47,810 Hivyo ni aina ya mshale, nafasi ya faili kiashiria. 115 00:07:47,810 --> 00:07:54,330 Na hivyo wakati sisi kuandika au kusoma tena ndani ya faili, 116 00:07:54,330 --> 00:07:56,760 faili kweli anakumbuka ambako ni, 117 00:07:56,760 --> 00:07:59,270 na hivyo anaendelea kutoka ambapo mshale ni. 118 00:07:59,270 --> 00:08:03,970 Hii inaweza kuwa ya manufaa wakati unataka, kusema, kusoma katika kiasi fulani kufanya kitu 119 00:08:03,970 --> 00:08:06,160 na kisha kusoma katika kiasi zifuatazo, 120 00:08:06,160 --> 00:08:10,700 lakini wakati mwingine sisi kutaka kurudi nyuma au kweli kuanza kutoka thamani fulani ya kumbukumbu. 121 00:08:10,700 --> 00:08:16,870 Hivyo basi kazi fseek, kile yake ni inaruhusu sisi hoja ya cursor katika faili fulani 122 00:08:16,870 --> 00:08:19,680 idadi fulani ya ka. 123 00:08:19,680 --> 00:08:24,260 Na kisha nini sisi kufanya ni bayana ambapo thamani ya kumbukumbu ni. 124 00:08:24,260 --> 00:08:31,520 Hivyo pengine ni hatua mbele au nyuma kutoka ambapo mshale sasa ni, 125 00:08:31,520 --> 00:08:35,750 au tunaweza bayana kwamba ni lazima tu hoja katika mwanzo wa faili 126 00:08:35,750 --> 00:08:37,090 au kutoka mwisho wa faili. 127 00:08:37,090 --> 00:08:41,230 Na hivyo unaweza kupita katika maadili hasi au chanya kwa kiasi, 128 00:08:41,230 --> 00:08:44,960 na kwamba itakuwa aina ya panya ama mbele au nyuma. 129 00:08:46,170 --> 00:08:51,920 >> Kabla ya sisi kupata katika psets mengine, maswali yoyote juu ya faili I / O? 130 00:08:53,860 --> 00:08:59,990 Sawa. Kama sisi kupata katika mifano zaidi, jisikie huru kunizuia kwa maswali. 131 00:08:59,990 --> 00:09:06,930 >> Hivyo katika Whodunit, wewe mitupu faili bitmap sawa na moja hii nyekundu kwenye slide, 132 00:09:06,930 --> 00:09:14,510 na inaonekana kama hii - rundo la dots nyekundu - na wewe kwa kweli sijui ni nini imeandikwa. 133 00:09:14,510 --> 00:09:23,310 Kama wewe kengeza, unaweza kuwa na uwezo wa kuona kidogo kibluu rangi ndani ya katikati. 134 00:09:23,310 --> 00:09:26,270 Kimsingi, hiyo ambapo Nakala inahifadhiwa. 135 00:09:26,270 --> 00:09:30,270 Kulikuwa na mauaji yaliyotokea, na tunahitaji kujua nani alifanya hivyo. 136 00:09:30,270 --> 00:09:36,760 Ili kufanya hivyo, tunahitaji aina ya kubadilisha picha hii katika format someka. 137 00:09:36,760 --> 00:09:42,740 Kama wewe guys milele wamekutana hii, wakati mwingine kutakuwa kidogo kits 138 00:09:42,740 --> 00:09:48,510 ambapo ingekuwa kioo wakimtukuza na filamu nyekundu. Mtu yeyote? Yeah. 139 00:09:48,510 --> 00:09:52,770 Hivyo itakuwa mitupu kitu kama hii, ungependa kuwa kioo wakimtukuza 140 00:09:52,770 --> 00:09:58,130 na filamu nyekundu juu yake, bila kuweka ni zaidi ya picha, 141 00:09:58,130 --> 00:10:03,410 na ungependa kuwa na uwezo wa kuona ujumbe siri humo. 142 00:10:03,410 --> 00:10:07,080 Hatuna kioo wakimtukuza na filamu nyekundu, hivyo badala tunakwenda aina ya kujenga yetu wenyewe 143 00:10:07,080 --> 00:10:09,060 katika pset hii. 144 00:10:09,060 --> 00:10:15,760 Na hivyo user ni kwenda pembejeo whodunit, basi kidokezo, bmp., 145 00:10:15,760 --> 00:10:18,800 hivyo ndiyo infile, hiyo ni nyekundu dot ujumbe, 146 00:10:18,800 --> 00:10:23,550 na kisha wao ni kusema verdict.bmp ni kwenda kuwa outfile yetu. 147 00:10:23,550 --> 00:10:27,900 Hivyo ni kwenda kujenga mpya bitmap sanamu sawa na kidokezo moja 148 00:10:27,900 --> 00:10:32,600 isipokuwa katika format someka ambapo tunaweza kuona ujumbe siri. 149 00:10:32,600 --> 00:10:37,550 >> Tangu sisi ni kwenda kuwa kushughulika na editing na manipulating bitmaps ya aina fulani, 150 00:10:37,550 --> 00:10:42,400 tunakwenda aina ya kupiga mbizi katika ndani ya muundo wa files haya bitmap. 151 00:10:42,400 --> 00:10:48,130 Sisi akaenda juu kidogo kidogo haya katika hotuba, lakini hebu tuangalie katika wao baadhi zaidi. 152 00:10:48,130 --> 00:10:51,740 Bitmaps kimsingi tu mpangilio wa ka 153 00:10:51,740 --> 00:10:55,790 ambapo tumekuwa maalum ambayo ka maana gani. 154 00:10:55,790 --> 00:11:00,540 Hivyo hapa ni aina ya kama ramani ya picha bitmap 155 00:11:00,540 --> 00:11:08,550 akisema kwamba huanza na baadhi ya faili header, huanza na baadhi ya taarifa katika huko. 156 00:11:08,550 --> 00:11:16,540 Unaweza kuona kwamba katika idadi kuhusu Byte 14 ukubwa wa picha unahitajika bitmap, 157 00:11:16,540 --> 00:11:18,520 na inaendelea. 158 00:11:18,520 --> 00:11:23,810 Lakini basi nini tuko kweli nia hapa ni kuanzia karibu idadi Byte 54. 159 00:11:23,810 --> 00:11:26,060 Tuna triples haya RGB. 160 00:11:26,060 --> 00:11:30,760 Nini kwamba kinaendelea kufanya ni vyenye saizi halisi, maadili rangi. 161 00:11:30,760 --> 00:11:35,950 Kila kitu juu ya kwamba katika header ni baadhi ya habari 162 00:11:35,950 --> 00:11:41,240 sambamba na ukubwa wa picha, upana wa sanamu, na urefu. 163 00:11:41,240 --> 00:11:44,930 Wakati sisi kwenda katika padding baadaye, tutaweza kuona nini ukubwa wa picha 164 00:11:44,930 --> 00:11:48,670 inaweza kuwa tofauti kuliko upana au urefu. 165 00:11:48,670 --> 00:11:54,240 Hivyo basi kuwakilisha hizi - picha hizo bitmap ni Mwandamano ya ka - 166 00:11:54,240 --> 00:11:59,370 nini tunaweza kufanya ni kusema sawa, mimi naenda kukumbuka kwamba katika index 14, 167 00:11:59,370 --> 00:12:03,380 hiyo ambapo kawaida ni, kwa mfano, lakini badala yake nini tunakwenda kufanya ili kufanya hii rahisi 168 00:12:03,380 --> 00:12:06,020 ni kurejelea katika struct. 169 00:12:06,020 --> 00:12:08,880 Na hivyo tuna structs mbili kwa ajili yetu, BITMAPFILEHEADER 170 00:12:08,880 --> 00:12:10,440 na BITMAPINFOHEADER, 171 00:12:10,440 --> 00:12:14,840 na hivyo wakati tunasoma katika faili la kwamba, kwa default itakavyo kuwa kwenda katika utaratibu, 172 00:12:14,840 --> 00:12:22,360 na hivyo ili ni pia kwenda kujaza katika ndani ya vigezo kama vile biWidth na biSize. 173 00:12:25,270 --> 00:12:31,230 Na kisha hatimaye, pixel kila ni kuwakilishwa na ka tatu. 174 00:12:31,230 --> 00:12:35,500 moja ya kwanza ni ya kiasi cha bluu katika pixel, ya pili ni ya kiasi cha kijani, 175 00:12:35,500 --> 00:12:41,120 na hatimaye, kiasi ya nyekundu, ambapo 0 ni kimsingi hakuna kijani bluu au hakuna au hakuna nyekundu 176 00:12:41,120 --> 00:12:43,720 na kisha ff ni thamani upeo. 177 00:12:43,720 --> 00:12:46,800 Hizi ni hexadesimoli maadili. 178 00:12:46,800 --> 00:12:53,870 Hivyo basi kama tuna ff0000, basi kwamba sambamba na kiasi cha juu cha bluu 179 00:12:53,870 --> 00:12:58,890 na kisha hakuna kijani na hakuna nyekundu, hivyo basi kwamba atatupa pixel bluu. 180 00:12:58,890 --> 00:13:04,190 Kisha kama tuna ff yote ya hela bodi, basi hiyo ina maana kwamba tuna pixel nyeupe. 181 00:13:04,190 --> 00:13:11,370 Hii ni aina ya kinyume na kawaida wakati sisi kusema RGB. Ni kweli kwenda BGR. 182 00:13:12,750 --> 00:13:18,990 >> Hivyo kama sisi kweli kuangalia katika mfano wa sanamu bitmap - ngoja nikuondoe moja hapa. 183 00:13:31,560 --> 00:13:33,830 Ni kidogo kidogo. 184 00:13:39,890 --> 00:13:47,840 Mimi nina zooming katika, na tunaweza kuona ni pixelated. Inaonekana kama vitalu wa rangi. 185 00:13:47,840 --> 00:13:50,110 Una vitalu nyeupe na kisha nyekundu vitalu. 186 00:13:50,110 --> 00:13:53,700 Kama wewe kucheza katika Paint Microsoft, kwa mfano, unaweza kufanya kitu kama hicho 187 00:13:53,700 --> 00:13:58,960 na kimsingi tu uchoraji mraba fulani ili maalum. 188 00:13:58,960 --> 00:14:08,060 Hivyo basi nini hii inasababisha na katika bitmap ni kama ifuatavyo. 189 00:14:08,060 --> 00:14:15,710 Hapa tuna saizi ya kwanza nyeupe, kwamba wote ni f 6, na kisha tuna saizi nyekundu, 190 00:14:15,710 --> 00:14:19,910 unahitajika kwa 0000ff. 191 00:14:19,910 --> 00:14:27,940 Na hivyo mlolongo wa bytes kwamba tuna inaonyesha jinsi picha bitmap ni kwenda kuangalia. 192 00:14:27,940 --> 00:14:32,230 Hivyo kile nimepata kufanyika hapa ni tu imeandikwa nje wale ka wote na kisha rangi nyekundu katika 193 00:14:32,230 --> 00:14:37,550 ili uweze aina ya kuona, kama wewe squint kidogo, jinsi ya aina hiyo inaonyesha uso smiley. 194 00:14:40,180 --> 00:14:46,390 >> njia ambayo bitmap images kazi ni mimi wanaangalia ni kimsingi kama gridi ya taifa. 195 00:14:46,390 --> 00:14:54,940 Na hivyo kwa default, kila mstari wa gridi ina kuwa nyingi ya ka 4. 196 00:15:00,520 --> 00:15:07,060 Kama sisi kuangalia picha bitmap, wewe ni kujaza thamani kila. 197 00:15:07,060 --> 00:15:17,370 Kwa mfano, unaweza kuwa nyekundu hapa, kijani hapa, bluu hapa, 198 00:15:17,370 --> 00:15:24,950 lakini wewe kuwa na kuhakikisha kwamba picha ni kujazwa na majina tofauti ya ka nne. 199 00:15:24,950 --> 00:15:32,200 Hivyo kama nataka picha yangu kuwa tatu vitalu pana, basi mimi ingekuwa kuweka thamani tupu 200 00:15:32,200 --> 00:15:35,640 katika moja ya mwisho ya kufanya hivyo nyingi ya nne. 201 00:15:35,640 --> 00:15:39,530 Hivyo basi napenda kuongeza katika kitu ambacho sisi ni wito padding. 202 00:15:39,530 --> 00:15:43,750 Mimi tu anaenda zinaonyesha kuwa kuna na x. 203 00:15:44,920 --> 00:15:54,160 Sasa wanasema tunataka picha kwamba ni 7 saizi ya muda mrefu, kwa mfano. 204 00:15:54,160 --> 00:15:59,550 Tuna 1, 2, 3, 4, 5, 6, 7, 205 00:16:04,750 --> 00:16:07,000 na yote ya kwamba ni kujazwa na Michezo katika. 206 00:16:07,000 --> 00:16:10,620 njia ambayo images bitmap kazi ni kwamba tunahitaji 8. 207 00:16:10,620 --> 00:16:12,460 Hivi sasa tuna 1, 2, 3, 4, 5, 6, 7. 208 00:16:12,460 --> 00:16:19,360 Tunahitaji 8 mazingira kwa ajili ya picha bitmap ya kusoma kwa usahihi. 209 00:16:19,360 --> 00:16:25,600 Hivyo basi nini sisi kufanya ni kuongeza katika kidogo tu ya padding 210 00:16:25,600 --> 00:16:29,430 kuhakikisha kwamba wote wa widths ni sare 211 00:16:29,430 --> 00:16:34,260 na kwamba wote wa widths ni nyingi ya 4. 212 00:16:42,110 --> 00:16:47,310 Na hivyo mimi awali zilionyesha, padding kama x au squiggly line, 213 00:16:47,310 --> 00:16:53,880 lakini katika picha halisi bitmap padding ni unahitajika kwa 0 hexadesimoli. 214 00:16:53,880 --> 00:16:57,340 Hivyo kwamba itakuwa tabia moja, 0. 215 00:16:58,980 --> 00:17:06,329 Nini kinaweza kuja Handy ni amri xxd. 216 00:17:06,329 --> 00:17:11,220 Kile yake ni kweli inaonyesha wewe, like sawa na nini mimi kabla na smiley 217 00:17:11,220 --> 00:17:15,630 wakati mimi kwa kweli kuchapishwa nini rangi ya kila itakuwa kwa pixel 218 00:17:15,630 --> 00:17:21,800 na kisha rangi-coded hivyo, wakati kukimbia xxd na amri zifuatazo, 219 00:17:21,800 --> 00:17:28,670 basi itakuwa kweli magazeti nje nini rangi ni kwa wale saizi. 220 00:17:28,670 --> 00:17:33,810 Nini wewe kufanya ni zaidi ya hapa mimi zinaonyesha, kama s-54 221 00:17:33,810 --> 00:17:36,530 anasema kuwa mimi naenda kuanza saa Byte 54 222 00:17:36,530 --> 00:17:40,820 kwa sababu kabla ya hapo, kumbuka kama sisi kuangalia nyuma na ramani ya bitmaps, 223 00:17:40,820 --> 00:17:42,690 kwamba taarifa zote header na mambo kama hayo. 224 00:17:42,690 --> 00:17:46,280 Lakini nini sisi kweli huduma kuhusu ni saizi halisi kwamba zinaonyesha rangi. 225 00:17:46,280 --> 00:17:52,700 Hiyo na kuongeza kwamba katika bendera,-s 54, basi sisi ni uwezo wa kuona maadili rangi. 226 00:17:52,700 --> 00:17:56,020 Na msiwe na wasiwasi juu bendera ngumu na mambo kama hayo. 227 00:17:56,020 --> 00:18:05,020 Katika spec kuweka tatizo, itabidi maelekezo ya jinsi ya kutumia xxd kuonyesha Ukubwa. 228 00:18:07,070 --> 00:18:15,590 Hivyo kama unaweza kuona hapa, ni aina ya inaonekana kama sanduku kijani, hii kitu kidogo. 229 00:18:15,590 --> 00:18:23,610 Nimekuwa rangi-coded 00ff00 kama kimsingi akisema hakuna bluu, mengi ya kijani, na hakuna nyekundu. 230 00:18:23,610 --> 00:18:26,370 Hivyo kwamba sambamba na kijani. 231 00:18:26,370 --> 00:18:31,920 Kama unaweza kuona hapa, tunaona Mstatili kijani. 232 00:18:31,920 --> 00:18:36,660 This Mstatili kijani ni 3 tu saizi mbalimbali, hivyo basi kile sisi kufanya 233 00:18:36,660 --> 00:18:44,350 kuhakikisha kwamba picha ni nyingi ya 4 ni mpana kuongeza katika padding ziada. 234 00:18:44,350 --> 00:18:49,460 Na hivyo basi hiyo ni jinsi ya kuona haya sekunde 0 hapa. 235 00:18:49,460 --> 00:18:54,510 Hii kweli kuwa matokeo ya resize pset yako, 236 00:18:54,510 --> 00:19:01,350 kimsingi kuchukua bitmap ndogo na kisha handla hivyo kwa 4. 237 00:19:01,350 --> 00:19:09,380 Na hivyo kile sisi kuona ni kwamba kweli picha hii ni 12 × pana, lakini 12 ni nyingi ya 4, 238 00:19:09,380 --> 00:19:12,940 na hivyo sisi kweli sioni sekunde 0 mwishoni kwa sababu hatuna haja ya kuongeza yoyote 239 00:19:12,940 --> 00:19:19,070 sababu ni kikamilifu padded. Haina lolote zaidi ya chumba. 240 00:19:20,720 --> 00:19:23,470 >> Sawa. Maswali yoyote kuhusu padding? 241 00:19:25,150 --> 00:19:27,460 Sawa. Cool. 242 00:19:27,460 --> 00:19:32,520 >> Kama nilivyoeleza hapo awali, bitmaps ni tu mlolongo wa bytes. 243 00:19:32,520 --> 00:19:39,170 Na hivyo kile sisi ni badala ya wanaohitaji kwa kuweka wimbo wa idadi hasa ambayo ya Byte 244 00:19:39,170 --> 00:19:47,050 sambamba na kipengele maalum, sisi kweli tumemuumba struct kuwakilisha kwamba. 245 00:19:47,050 --> 00:19:50,930 Hivyo kile sisi ni struct RGBTRIPLE. 246 00:19:50,930 --> 00:19:54,590 Wakati wowote na mfano wa triple RGB, 247 00:19:54,590 --> 00:20:00,970 kwa sababu hii ni aina define struct, basi unaweza kupata variable rgbtBlue, 248 00:20:00,970 --> 00:20:09,520 vile vile vigezo Green na Red, ambayo yanaonyesha jinsi gani buluu, kijani, na nyekundu, 249 00:20:09,520 --> 00:20:11,580 mtiririko huo, una. 250 00:20:11,580 --> 00:20:16,800 >> Hivyo kama tuna bluu variable kuweka 0, seti ya kijani na ff, 251 00:20:16,800 --> 00:20:22,060 ambayo ni thamani ya kiwango cha unaweza kuwa, na kisha variable nyekundu kuweka 0, 252 00:20:22,060 --> 00:20:27,870 basi ingekuwa nini rangi maalum huu RGB triple kuwakilisha? >> [Mwanafunzi] Green. 253 00:20:27,870 --> 00:20:29,150 Green. Hasa. 254 00:20:29,150 --> 00:20:34,480 Ni kwenda kuwa na manufaa kwa kujua kwamba wakati wowote una mfano wa triple RGB, 255 00:20:34,480 --> 00:20:41,340 unaweza kweli kupata kiasi cha Michezo - buluu, kijani, na nyekundu - tofauti. 256 00:20:43,350 --> 00:20:54,900 >> Sasa kwa kuwa tumekuwa aliyesema kuhusu muundo wa kwamba, hebu kuchukua kuangalia faili BMP. 257 00:20:54,900 --> 00:20:57,870 Hizi ni structs alifanya kwa ajili yenu. 258 00:20:57,870 --> 00:21:01,820 Hapa tuna struct BITMAPFILEHEADER. 259 00:21:01,820 --> 00:21:07,610 Wa maslahi ni kawaida. 260 00:21:07,610 --> 00:21:12,660 Baadaye, tuna header info, ambayo ina wachache na mambo zaidi ya kuwa ni ya kuvutia kwa sisi, 261 00:21:12,660 --> 00:21:15,480 yaani ukubwa, upana, na urefu. 262 00:21:15,480 --> 00:21:19,170 Kama tutaweza kuingia katika baadaye, wakati wewe kusoma katika na faili, 263 00:21:19,170 --> 00:21:25,500 ni moja kwa moja anasoma katika sababu tumekuwa kuweka ili kuwa sawa. 264 00:21:25,500 --> 00:21:31,990 Hivyo biSize yana ka haki kwamba yanahusiana na ukubwa halisi wa picha. 265 00:21:34,700 --> 00:21:40,500 Na kisha hapa, mwisho, kama tumekuwa kuongelea, tuna RGBTRIPLE typedef struct. 266 00:21:40,500 --> 00:21:46,840 Tuna rgbtBlue, Green, na Red yanayohusiana na hayo. 267 00:21:48,210 --> 00:21:49,340 >> Mkuu. Sawa. 268 00:21:49,340 --> 00:21:56,360 Sasa kwa kuwa tunaelewa bitmaps kidogo, kuelewa kwamba tuna header faili 269 00:21:56,360 --> 00:22:00,790 na header info yanayohusiana na hayo na kisha baada ya sisi kuwa na mambo ya kuvutia 270 00:22:00,790 --> 00:22:05,110 ya rangi, na rangi hizo ni kuwakilishwa na structs RGBTRIPLE, 271 00:22:05,110 --> 00:22:12,710 na wale, kwa upande mwingine, kuwa na maadili tatu zinazohusika na bluu, kijani, na nyekundu. 272 00:22:12,710 --> 00:22:17,270 >> Hivyo sasa, tunaweza kufikiri kuhusu aina ya Kuokoa kidogo. 273 00:22:17,270 --> 00:22:20,130 Sorry. Fikiria kuhusu Whodunit. 274 00:22:20,130 --> 00:22:25,750 Wakati sisi kuwa kidokezo yetu ya SVG, basi ni nini tunataka kufanya ni kusoma katika hilo pixel kwa pixel 275 00:22:25,750 --> 00:22:33,860 na kisha kubadili namna fulani saizi wale ili tuweze pato ndani format someka. 276 00:22:33,860 --> 00:22:41,020 Na hivyo kwa pato hilo, sisi ni kwenda kuandika pixel kwa pixel katika faili verdict.bmp. 277 00:22:41,020 --> 00:22:45,120 Hiyo ni aina ya mengi ya kufanya. Tunatambua kwamba. 278 00:22:45,120 --> 00:22:49,860 Hivyo kile ambacho tumefanya ni kweli tumekuwa zinazotolewa kwa copy.c. 279 00:22:49,860 --> 00:22:57,610 Nini copy.c gani ni tu hufanya nakala halisi ya faili aliyopewa bitmap na kisha matokeo yake. 280 00:22:57,610 --> 00:23:01,900 Hivyo hii tayari kufungua faili kwa ajili yenu, wasomaji katika pixel kwa pixel, 281 00:23:01,900 --> 00:23:04,510 na kisha anaandika katika ndani ya faili pato. 282 00:23:04,510 --> 00:23:07,080 >> Hebu tuangalie kwamba. 283 00:23:13,390 --> 00:23:18,290 Hii ni kuhakikisha matumizi sahihi, 284 00:23:18,290 --> 00:23:22,640 kupata filenames hapa. 285 00:23:22,640 --> 00:23:29,940 Nini hii unaweka faili pembejeo kuwa kile ambacho tumekuwa kupita katika katika infile hapa, 286 00:23:29,940 --> 00:23:34,750 ambayo ni amri ya mstari wa pili yetu hoja. 287 00:23:34,750 --> 00:23:37,640 Hundi ya kuhakikisha kwamba tunaweza kufungua faili. 288 00:23:38,960 --> 00:23:44,860 Hundi ya kuhakikisha tunaweza kufanya outfile mpya hapa. 289 00:23:45,630 --> 00:23:53,270 Kisha nini hii haina hapa, ni tu kimsingi kuanza kusoma katika faili la bitmap tangu mwanzo. 290 00:23:53,270 --> 00:23:56,700 mwanzo, kama tujuavyo, ina BITMAPFILEHEADER, 291 00:23:56,700 --> 00:24:03,200 na hivyo wale Mwandamano wa bits itakuwa moja kwa moja kujaza BITMAPFILEHEADER. 292 00:24:03,200 --> 00:24:07,940 Hivyo nini sisi hapa ni kusema kwamba bf BITMAPFILEHEADER - 293 00:24:07,940 --> 00:24:13,150 hiyo ni variable wetu mpya wa BITMAPFILEHEADER aina - 294 00:24:13,150 --> 00:24:22,560 sisi ni kwenda kuweka ndani ya bf nini sisi kusoma kutoka katika pointer, ambayo ni infile yetu. 295 00:24:22,560 --> 00:24:23,970 Kiasi gani sisi kusoma? 296 00:24:23,970 --> 00:24:32,160 Tunasoma katika ngapi ka tunahitaji vyenye BITMAPFILEHEADER nzima. 297 00:24:32,160 --> 00:24:34,660 Vile vile, kwamba ni nini tunaweza kufanya kwa ajili header info. 298 00:24:34,660 --> 00:24:39,010 Hivyo sisi ni kuendelea pamoja faili wetu katika infile, 299 00:24:39,010 --> 00:24:44,360 na sisi ni kusoma bits wale na ka, na sisi ni plugging yao moja kwa moja katika 300 00:24:44,360 --> 00:24:47,880 katika haya matukio ya vigezo kwamba sisi ni maamuzi. 301 00:24:49,370 --> 00:24:53,800 Hapa tuko tu kuhakikisha kuwa bitmap ni bitmap. 302 00:24:57,670 --> 00:25:01,030 >> Sasa tuna outfile, haki? 303 00:25:01,030 --> 00:25:04,420 Hivyo kama ulivyo wakati sisi kujenga hilo, ni kimsingi tupu. 304 00:25:04,420 --> 00:25:07,710 Hivyo inabidi kimsingi kuunda bitmap mpya kutoka mwanzo. 305 00:25:07,710 --> 00:25:12,280 Tunachofanya ni sisi kuhakikisha kwamba sisi nakala katika header faili 306 00:25:12,280 --> 00:25:16,850 na header info tu kama infile ana. 307 00:25:16,850 --> 00:25:22,850 Tunachofanya ni sisi kuandika - na kukumbuka kwamba bf ni variable 308 00:25:22,850 --> 00:25:29,300 ya BITMAPFILEHEADER aina, ili kile sisi kufanya ni sisi tu kutumia kwamba maudhui 309 00:25:29,300 --> 00:25:34,980 kuandika katika outfile. 310 00:25:36,550 --> 00:25:38,510 Hapa, kumbuka kuongelea padding, 311 00:25:38,510 --> 00:25:47,820 jinsi ni muhimu ili kuhakikisha kuwa kiasi ya saizi ya kwamba sisi ni nyingi ya 4. 312 00:25:47,820 --> 00:25:52,790 Hii ni formula pretty manufaa kwa mahesabu ni kiasi gani padding una 313 00:25:52,790 --> 00:25:57,670 aliyopewa upana wa faili yako. 314 00:25:57,670 --> 00:26:04,120 Mimi nataka wewe guys kukumbuka kwamba katika copy.c tuna formula kwa ajili ya kuhesabu padding. 315 00:26:04,120 --> 00:26:07,970 Sawa? Hivyo kila mtu kukumbuka kwamba. Mkuu. 316 00:26:07,970 --> 00:26:14,050 Hivyo basi nini copy.c gani ijayo ni iterates juu ya yote ya scanlines. 317 00:26:14,050 --> 00:26:23,730 Ni inakwenda kupitia safu ya kwanza na kisha maduka kila mara tatu kwamba wasomaji 318 00:26:23,730 --> 00:26:26,920 na kisha anaandika ndani outfile. 319 00:26:26,920 --> 00:26:33,120 Hivyo basi hapa sisi ni kusoma tu moja RGB triple wakati 320 00:26:33,120 --> 00:26:39,860 na kisha kuweka triple huo katika outfile. 321 00:26:41,120 --> 00:26:48,340 sehemu Tricky ni kwamba padding si triple RGB, 322 00:26:48,340 --> 00:26:55,200 na hivyo hatuwezi kusoma tu kwamba kiasi padding ya triples RGB. 323 00:26:55,200 --> 00:27:01,460 Tunachotakiwa kufanya ni kweli tu hoja faili wetu nafasi kiashiria, hoja ya cursor yetu, 324 00:27:01,460 --> 00:27:06,840 kwa aina ya ruka juu ya padding yote ili sisi ni saa mstari unaofuata. 325 00:27:06,840 --> 00:27:12,990 Na kisha nini hii haina ni nakala inaonyesha jinsi unaweza kutaka kuongeza padding. 326 00:27:12,990 --> 00:27:14,990 Hivyo tumekuwa mahesabu kiasi gani padding tunahitaji, 327 00:27:14,990 --> 00:27:18,220 hivyo kwamba ina maana kuwa tunahitaji padding idadi ya sekunde 0. 328 00:27:18,220 --> 00:27:24,510 Nini hii ni kwa kitanzi kwamba unaweka padding idadi ya sekunde 0 ndani ya outfile yetu. 329 00:27:24,510 --> 00:27:31,170 Na kisha hatimaye, wewe karibu files wote. Wewe karibu infile kama vile outfile. 330 00:27:31,170 --> 00:27:34,870 >> Basi hiyo ni jinsi copy.c matendo, 331 00:27:34,870 --> 00:27:37,430 na kwamba kinaendelea kuwa pretty muhimu. 332 00:27:39,720 --> 00:27:43,750 Badala ya moja kwa moja tu kwa kweli kuiga na pasting ni 333 00:27:43,750 --> 00:27:46,800 au tu kuangalia ni na kuandika katika chochote unataka, 334 00:27:46,800 --> 00:27:49,440 unaweza tu wanataka nitafanya amri hii katika terminal, 335 00:27:49,440 --> 00:27:54,520 linganisha copy.c whodunit.c, ambayo itakuwa kuunda faili mpya, whodunit.c, 336 00:27:54,520 --> 00:27:58,330 kwamba ina exact maudhui kama nakala gani. 337 00:27:58,330 --> 00:28:03,880 Hivyo basi nini tunaweza kufanya ni kutumia kama mfumo wa juu ambayo kujenga na kuhariri 338 00:28:03,880 --> 00:28:06,900 kwa whodunit faili wetu. 339 00:28:08,500 --> 00:28:14,670 >> Hizi ni yetu-dos kufanya kwa Whodunit, lakini kile copy.c gani 340 00:28:14,670 --> 00:28:16,730 ni kweli inachukua huduma ya wengi wao kwa ajili yetu. 341 00:28:16,730 --> 00:28:21,900 Basi wote tunahitaji kufanya ijayo ni kubadilisha saizi kama inahitajika 342 00:28:21,900 --> 00:28:25,920 kwa kweli kufanya faili someka. 343 00:28:25,920 --> 00:28:32,960 Kumbuka kwamba kwa pixel aliyopewa tatu, hivyo kwa variable fulani ya RGBTRIPLE aina, 344 00:28:32,960 --> 00:28:35,990 unaweza kupata bluu, maadili ya kijani, na nyekundu. 345 00:28:35,990 --> 00:28:38,670 Hiyo atakuja katika Handy kwa sababu kama unaweza kupata yao, 346 00:28:38,670 --> 00:28:41,770 hiyo ina maana kwamba unaweza pia kuangalia yao, 347 00:28:41,770 --> 00:28:45,430 na hiyo ina maana kwamba unaweza pia mabadiliko yao. 348 00:28:45,430 --> 00:28:49,430 >> Hivyo wakati sisi kurudi mfano wetu nyekundu magnifying kioo, 349 00:28:49,430 --> 00:28:53,390 kimsingi, kwamba alikuwa kaimu kama aina ya chujio kwa ajili yetu. 350 00:28:53,390 --> 00:28:58,160 Basi nini tunataka kufanya ni tunataka kuchuja wote wa triples zinazokuja in 351 00:28:58,160 --> 00:29:01,240 Kuna njia mbalimbali za kufanya hivi. 352 00:29:01,240 --> 00:29:07,100 Kimsingi, unaweza kuwa na kila aina ya chujio unataka. 353 00:29:07,100 --> 00:29:09,890 Labda unataka kubadilisha saizi wote nyekundu 354 00:29:09,890 --> 00:29:13,570 au labda unataka kubadilisha rangi tofauti pixel kwa rangi tofauti. 355 00:29:13,570 --> 00:29:15,400 Hiyo ni juu yako. 356 00:29:15,400 --> 00:29:19,580 Kumbuka kwamba unaweza kuangalia nini rangi pixel ni 357 00:29:19,580 --> 00:29:23,000 na kisha unaweza pia mabadiliko hayo kama wewe ni kwenda kupitia. 358 00:29:24,410 --> 00:29:26,420 >> Sawa. Basi hiyo ni Whodunit. 359 00:29:26,420 --> 00:29:32,760 Mara baada ya kukimbia Whodunit, utajua ambao culprit ya uhalifu ilikuwa. 360 00:29:32,760 --> 00:29:35,540 >> Sasa tunakwenda kwenda Resize. 361 00:29:35,540 --> 00:29:37,990 Sisi ni kwenda bado kuwa kushughulika na bitmaps. 362 00:29:37,990 --> 00:29:40,750 Nini sisi ni kwenda kufanya ni sisi itawabidi bitmap pembejeo 363 00:29:40,750 --> 00:29:45,890 na kisha tunakwenda kupita katika idadi na kisha kupata bitmap outfile 364 00:29:45,890 --> 00:29:51,380 ambapo kwamba kimsingi infile yetu kuongezwa kwa n. 365 00:29:54,670 --> 00:30:01,450 Sema faili yangu ilikuwa moja tu pixel kubwa. 366 00:30:01,450 --> 00:30:09,100 Kisha kama n yangu ilikuwa 3, scaling na 3, basi napenda kurudia kwamba pixel n idadi ya nyakati, 367 00:30:09,100 --> 00:30:14,410 hivyo mara 3, na kisha pia kuongeza ni chini mara 3 pia. 368 00:30:14,410 --> 00:30:17,840 Hivyo unaweza kuona mimi nina kuongeza kwa wima pamoja na usawa. 369 00:30:17,840 --> 00:30:19,680 >> Na kisha hapa ni mfano. 370 00:30:19,680 --> 00:30:27,590 Kama una n = 2, unaweza kuona kwamba kwanza pixel bluu kuna alirudia mara mbili 371 00:30:27,590 --> 00:30:30,930 usawa kama vizuri kama mara mbili wima. 372 00:30:30,930 --> 00:30:38,040 Na kisha kuwa inaendelea, na hivyo kuwa na kuongeza moja kwa moja ya picha yako ya awali na mbili. 373 00:30:40,920 --> 00:30:47,600 >> Hivyo basi kama tulikuwa na undani pseudocode kwa hili, tunataka kufungua faili. 374 00:30:47,600 --> 00:30:49,880 Na kisha kujua kwamba kama sisi kurudi nyuma hapa, 375 00:30:49,880 --> 00:30:54,540 tunaona kwamba upana kwa outfile kinaenda kuwa tofauti kuliko upana kwa infile. 376 00:30:54,540 --> 00:30:56,130 Hiyo ina maana gani? 377 00:30:56,130 --> 00:31:01,230 Hiyo ina maana kwamba header yetu habari ni kwenda na mabadiliko. 378 00:31:01,230 --> 00:31:03,790 Na hivyo kile tutaweza wanataka kufanya ni update info header, 379 00:31:03,790 --> 00:31:11,820 kujua kwamba wakati tunasoma katika files kama wewe ni uendeshaji juu ya mfumo copy.c, 380 00:31:11,820 --> 00:31:17,570 tayari tuna variable kwamba inaonyesha kile kawaida ni na mambo kama hayo. 381 00:31:17,570 --> 00:31:24,060 Hivyo mara tu una kwamba, nini unaweza kutaka kufanya mabadiliko vigezo wale fulani. 382 00:31:24,060 --> 00:31:29,380 Kumbuka, kama una struct, jinsi wewe kupata vigezo ndani ya kwamba. 383 00:31:29,380 --> 00:31:32,080 Wewe kutumia operator dot, haki? 384 00:31:32,080 --> 00:31:36,420 Hivyo basi kwa kutumia kwamba, unajua kwamba utasikia haja ya kubadili info header. 385 00:31:36,480 --> 00:31:41,030 Hivyo hapa ni tu orodha ya mambo ya halisi kwamba ni kwenda kuwa kubadilisha katika faili yako. 386 00:31:41,030 --> 00:31:45,180 ukubwa wa faili inaenda kubadilika, picha, kama vile upana na urefu. 387 00:31:45,180 --> 00:31:50,080 Hivyo basi kurejea ramani ya bitmaps, 388 00:31:50,080 --> 00:31:57,730 kuangalia kama ni header faili au header info kwamba ina taarifa kwamba 389 00:31:57,730 --> 00:32:00,920 na basi mabadiliko kama inahitajika. 390 00:32:05,010 --> 00:32:12,470 Tena, wanasema linganisha copy.c resize.c. 391 00:32:12,470 --> 00:32:19,270 Hiyo ina maana kwamba resize.c sasa ina kila kitu ambacho zilizomo ndani ya nakala 392 00:32:19,270 --> 00:32:24,490 kwa sababu nakala hutoa sisi njia ya kusoma katika kila pixel scanline kwa pixel. 393 00:32:24,490 --> 00:32:29,860 Ila sasa, badala ya kubadilisha maadili kama tulivyofanya katika Whodunit, 394 00:32:29,860 --> 00:32:37,980 nini tunataka kufanya ni sisi unataka kuandika katika saizi nyingi 395 00:32:37,980 --> 00:32:43,580 muda mrefu kama n wetu ni mkubwa kuliko 1. 396 00:32:43,580 --> 00:32:47,110 >> Kisha nini tunataka kufanya ni tunataka kunyoosha kwa usawa na n, 397 00:32:47,110 --> 00:32:50,490 kama vile kunyoosha kwa wima na n. 398 00:32:50,490 --> 00:32:52,710 Jinsi gani tunafanya hivi? 399 00:32:52,710 --> 00:32:56,890 Sema n yako ni 2 na una hii infile aliyopewa. 400 00:32:56,890 --> 00:32:58,730 Cursor yako ni kwenda kuanza saa moja ya kwanza, 401 00:32:58,730 --> 00:33:03,530 na nini unataka kufanya kama n ni 2, unataka magazeti katika 2 wa wale. 402 00:33:03,530 --> 00:33:05,490 Hivyo magazeti katika 2 wa wale. 403 00:33:05,490 --> 00:33:10,830 Kisha mshale wako ni kwenda hoja kwa pixel pili, ambayo ni moja nyekundu, 404 00:33:10,830 --> 00:33:18,400 na ni kwenda magazeti nje ya 2 ndio wale nyekundu, appending ni kwenye nini ni kufanyika kabla. 405 00:33:18,400 --> 00:33:26,280 Kisha mshale itahamia kwa pixel ijayo na kusogea katika 2 wa wale. 406 00:33:26,280 --> 00:33:37,180 Kama kuangalia nyuma kwa mfumo copy.c, nini hii haina haki hapa 407 00:33:37,180 --> 00:33:42,830 ni inajenga mfano mpya wa triple RGB, variable mpya iitwayo tatu. 408 00:33:42,830 --> 00:33:50,500 Na hapa wakati anasoma ndani yake, inasomeka kutoka infile 1 RGBTRIPLE 409 00:33:50,500 --> 00:33:53,470 na maduka ya kuwa ndani ya variable kwamba tatu. 410 00:33:53,470 --> 00:33:57,590 Hivyo basi wewe kweli kuwa kutofautiana anayewakilisha kwamba pixel fulani. 411 00:33:57,590 --> 00:34:05,290 Kisha wakati kuandika, nini unaweza kutaka kufanya ni encase kauli fwrite katika kwa kitanzi 412 00:34:05,290 --> 00:34:11,080 kwamba anaandika ndani outfile yako kama mara nyingi kama inahitajika. 413 00:34:17,449 --> 00:34:20,100 Hiyo ni rahisi ya kutosha. 414 00:34:20,200 --> 00:34:27,590 Tu kimsingi kurudia mchakato wa kuandika n idadi ya mara ya kuongeza kwa usawa. 415 00:34:27,590 --> 00:34:32,969 >> Lakini basi tunahitaji kukumbuka kwamba padding yetu ni kwenda na mabadiliko. 416 00:34:47,350 --> 00:34:53,020 Hapo awali, wanasema sisi na kitu fulani cha urefu 3. 417 00:34:53,020 --> 00:35:00,130 Basi tunataka kuongeza tu katika kiasi gani padding? Moja tu zaidi ya kufanya hivyo nyingi ya 4. 418 00:35:00,130 --> 00:35:10,480 Lakini kusema sisi ni kuongeza picha hii hasa kwa n = 2. 419 00:35:10,480 --> 00:35:16,300 Hivyo basi, jinsi wengi blue saizi ingekuwa tuna mwishoni? Tunataka kuwa na 6. 420 00:35:16,300 --> 00:35:21,470 1, 2, 3, 4, 5, 6. Wote haki. 421 00:35:21,470 --> 00:35:26,580 6 si nyingi ya 4. Nini nyingi karibu ya 4? Hiyo itakuwa 8. 422 00:35:26,580 --> 00:35:33,200 Hivyo sisi ni kweli kwenda na wahusika 2 padding huko. 423 00:35:33,200 --> 00:35:38,720 >> Je, mtu yeyote kumbuka kama tuna formula kwa mahesabu ya padding 424 00:35:38,720 --> 00:35:41,350 na ambapo ambayo inaweza kuwa? 425 00:35:41,350 --> 00:35:45,160 [Inaudible mwanafunzi majibu] >> Yeah, copy.c. Haki. 426 00:35:45,160 --> 00:35:49,800 Kuna formula katika copy.c kwa mahesabu ni kiasi gani padding una 427 00:35:49,800 --> 00:35:53,810 aliyopewa upana fulani ya sanamu bitmap. 428 00:35:53,810 --> 00:36:02,950 Hivyo basi, kwamba kinaendelea kuwa na manufaa wakati unahitaji kuongeza kwa kiasi fulani ya padding 429 00:36:02,950 --> 00:36:06,160 kwa kweli takwimu nje kiasi gani padding unahitaji kuongeza. 430 00:36:10,820 --> 00:36:15,850 Lakini moja kumbuka, ingawa, ni kwamba wewe unataka kuhakikisha kwamba unatumia haki ya kawaida. 431 00:36:15,850 --> 00:36:21,410 Kuwa makini tu kwa sababu wewe ni kimsingi kwenda kushughulika na picha mbili bitmap. 432 00:36:21,410 --> 00:36:23,410 Wewe unataka kuhakikisha kwamba unatumia moja ya haki. 433 00:36:23,410 --> 00:36:26,820 Wakati wewe ni kuhesabu padding kwa outfile, unataka kutumia upana wa outfile 434 00:36:26,820 --> 00:36:29,860 na si upana wa moja uliopita. 435 00:36:29,860 --> 00:36:37,240 >> Mkuu. Kwamba aina ya huduma inachukua kukaza nzima bitmap image usawa. 436 00:36:37,240 --> 00:36:41,290 Lakini nini tunataka kufanya ni kweli kunyoosha kwa wima pia. 437 00:36:41,290 --> 00:36:48,760 Hii ni kwenda kuwa kidogo trickier sababu wakati tumekuwa kumaliza kuiga mstari 438 00:36:48,760 --> 00:36:51,580 na kuandika kuwa mstari, mshale yetu ni kwenda kuwa mwishoni. 439 00:36:51,580 --> 00:36:56,210 Hivyo kama sisi kusoma tena, basi tu kwenda kusoma katika mstari wa pili. 440 00:36:56,210 --> 00:37:03,660 Basi nini tunataka kufanya ni aina ya kupata baadhi ya njia ya kuiga safu wale tena 441 00:37:03,660 --> 00:37:12,500 au aina tu ya kuchukua kwamba mstari na kisha kuandika tena. 442 00:37:14,380 --> 00:37:17,940 Kama mimi aina ya alluded, kuna tofauti ya njia ya kufanya hii. 443 00:37:17,940 --> 00:37:23,040 Nini unaweza kufanya ni kama utaenda kupitia na kusoma kupitia scanline fulani 444 00:37:23,040 --> 00:37:28,560 na kubadilisha kama ni lazima, basi aina ya kuhifadhi yote ya saizi ya wale katika safu. 445 00:37:28,560 --> 00:37:36,350 Kisha baadaye juu ya wewe kujua kuwa wewe utakuwa haja ya magazeti ya nje kwamba safu tena, 446 00:37:36,350 --> 00:37:39,830 na hivyo unaweza kutumia tu kwamba safu ya kufanya hivyo. 447 00:37:39,830 --> 00:37:44,500 Njia nyingine ya kufanya hivyo ni wewe wanaweza kunakili chini moja mstari, 448 00:37:44,500 --> 00:37:47,950 kuelewa kwamba unahitaji nakala kwamba tena, hivyo kwa kweli hoja cursor yako, 449 00:37:47,950 --> 00:37:50,950 na kwamba itakuwa ni ya kutumia fseek mbinu. 450 00:37:50,950 --> 00:37:56,410 Unaweza hoja cursor yako njia yote nyuma na kisha kurudia utaratibu nakala tena. 451 00:37:56,410 --> 00:38:03,960 >> Hivyo kama kuongeza idadi yetu ni n, basi ni mara ngapi itakuwa tuna kwenda nyuma 452 00:38:03,960 --> 00:38:10,500 na rewrite mstari? >> [Mwanafunzi] n - 1. >> Yeah, kamilifu. n - 1. 453 00:38:10,500 --> 00:38:14,390 Tumefanya hivyo mara moja tayari, hivyo basi tutaweza wanataka kurudia kurejea mchakato 454 00:38:14,390 --> 00:38:17,460 n - 1 kiasi cha mara. 455 00:38:22,730 --> 00:38:25,860 Sawa. Hivyo kuna una resize yako kazi. 456 00:38:25,860 --> 00:38:34,360 >> Sasa tunaweza kupata sehemu kweli fun, pset favorite, ambayo ni Kuokoa. 457 00:38:34,360 --> 00:38:39,580 Badala ya bitmaps, wakati huu sisi ni kushughulika na JPEGs. 458 00:38:39,580 --> 00:38:43,370 Sisi ni kweli si kupewa faili tu ya JPEGs, 459 00:38:43,370 --> 00:38:46,600 sisi ni kupewa kimsingi ghafi kumbukumbu kadi format. 460 00:38:46,600 --> 00:38:51,790 Na hivyo hii ina kidogo ya maadili info na takataka katika mwanzo, 461 00:38:51,790 --> 00:38:57,240 na kisha ni kuanza na ina rundo la files JPEG. 462 00:38:57,240 --> 00:39:03,430 Hata hivyo, sisi ni kukabidhiwa kadi ambapo tumekuwa ilifutwa photos; 463 00:39:03,430 --> 00:39:08,300 kimsingi, tumesahau ambapo picha ziko ndani ya kadi. 464 00:39:08,300 --> 00:39:12,770 Hivyo basi kazi yetu katika Kuokoa ni kwenda kupitia muundo huu kadi 465 00:39:12,770 --> 00:39:16,500 na kupata picha hizo tena. 466 00:39:16,500 --> 00:39:23,990 >> Kwa bahati, muundo wa files JPEG na faili kadi ni kidogo kusaidia. 467 00:39:23,990 --> 00:39:28,850 Ni dhahiri wangeweza kidogo trickier kama si katika format fulani. 468 00:39:28,850 --> 00:39:40,160 Kila faili JPEG kweli kuanza kwa Mwandamano mbili inawezekana, waliotajwa hapo juu. 469 00:39:40,160 --> 00:39:42,970 Kimsingi, wakati wowote una mpya JPEG faili, 470 00:39:42,970 --> 00:39:52,720 inaanza na mlolongo ama ffd8 ffe0 au nyingine moja, ffd8 ffe1. 471 00:39:52,720 --> 00:39:59,530 Jambo jingine kusaidia kujua ni kwamba JPEGs ni kuhifadhiwa contiguously. 472 00:39:59,530 --> 00:40:03,380 Hivyo kila mmoja JPEG faili mwisho, nyingine moja kuanza. 473 00:40:03,380 --> 00:40:07,070 Hivyo hakuna aina yoyote ya katika-kati ya maadili huko. 474 00:40:07,070 --> 00:40:15,510 Mara baada ya kuanza kwa hit JPEG, kama wameweza tayari kusoma JPEG, 475 00:40:15,510 --> 00:40:21,800 unajua kwamba ve hit mwisho wa mmoja uliopita na kuanza moja ijayo. 476 00:40:21,800 --> 00:40:25,890 >> Ili aina ya taswira hii, mimi alifanya schematic. 477 00:40:25,890 --> 00:40:36,910 Jambo jingine kuhusu JPEGs ni kwamba tunaweza kuzisoma katika mifuatano ya ka 512 kwa wakati mmoja, 478 00:40:36,910 --> 00:40:39,380 vile vile na mwanzo wa kadi. 479 00:40:39,380 --> 00:40:43,370 Hatuna haja ya kuwa na kuangalia kila Byte moja kwa sababu kwamba ingekuwa Suck. 480 00:40:43,370 --> 00:40:48,200 Hivyo badala yake, nini tunaweza kufanya ni kweli tu kusoma katika bytes 512 wakati 481 00:40:48,200 --> 00:40:54,700 na kisha, badala ya kuangalia katika kati ya wale katika vipande wale kidogo kidogo, 482 00:40:54,700 --> 00:40:58,640 tunaweza kuangalia tu mwanzo wa ka 512. 483 00:40:58,640 --> 00:41:02,570 Kimsingi, katika picha hii, nini kuona ni mwanzo wa kadi, 484 00:41:02,570 --> 00:41:08,700 una maadili ambayo ni kweli si muhimu kwa JPEGs halisi wenyewe. 485 00:41:08,700 --> 00:41:15,830 Lakini basi nini mimi ni nyota zinaonyesha moja ya Mwandamano mbili kuanzia kwa JPEG. 486 00:41:15,830 --> 00:41:19,910 Hiyo wakati wowote, unaweza kuona nyota, unajua kwamba una faili JPEG. 487 00:41:19,910 --> 00:41:25,030 Na kisha kila faili JPEG ni kwenda kuwa baadhi ya ka nyingi 512 488 00:41:25,030 --> 00:41:27,880 lakini si lazima nyingi sawa. 489 00:41:27,880 --> 00:41:32,050 njia ambayo unajua kwamba ve hit nyingine JPEG ni kama hit mwingine nyota, 490 00:41:32,050 --> 00:41:39,090 mwingine mlolongo kuanzia ya ka. 491 00:41:39,090 --> 00:41:43,330 Kisha nini una hapa ni wewe kuwa nyekundu JPEG faili kuendelea mpaka hit nyota, 492 00:41:43,330 --> 00:41:45,150 ambayo ni unahitajika kwa rangi mpya. 493 00:41:45,150 --> 00:41:48,510 Wewe kuendelea na kisha hit mwingine nyota, wewe hit nyingine JPEG, 494 00:41:48,510 --> 00:41:50,590 wewe kuendelea njia yote hadi mwisho. 495 00:41:50,590 --> 00:41:53,180 Uko katika picha ya mwisho hapa, moja pink. 496 00:41:53,180 --> 00:41:58,220 Unaweza kwenda mpaka mwisho hit mwisho wa tabia ya faili. 497 00:41:58,220 --> 00:42:00,820 Hii ni kwenda kuwa muhimu kweli kweli. 498 00:42:00,820 --> 00:42:03,170 >> chache kuu takeaways hapa: 499 00:42:03,170 --> 00:42:06,670 faili kadi haina kuanza na JPEG, 500 00:42:06,670 --> 00:42:13,350 lakini mara moja JPEG kuanza, wote wa JPEGs ni kuhifadhiwa upande kwa upande mmoja na mwingine. 501 00:42:17,520 --> 00:42:20,420 >> Baadhi pseudocode kwa Kuokoa. 502 00:42:20,420 --> 00:42:22,570 Kwanza, sisi ni kwenda kufungua kadi yetu ya SVG, 503 00:42:22,570 --> 00:42:27,500 na kwamba itakuwa ni ya kutumia faili yetu I / O kazi. 504 00:42:27,500 --> 00:42:32,430 Sisi ni kwenda kurudia utaratibu zifuatazo mpaka tumekuwa kufikiwa mwisho wa faili. 505 00:42:32,430 --> 00:42:36,450 Sisi ni kwenda kusoma ka 512 wakati huo. 506 00:42:36,450 --> 00:42:39,180 Na kile Mimi alisema hapa ni tunakwenda kuhifadhi katika buffer, 507 00:42:39,180 --> 00:42:46,230 hivyo kimsingi kushikilia wale ka 512 mpaka sisi kujua hasa nini cha kufanya na wao. 508 00:42:46,230 --> 00:42:50,300 Kisha nini tunataka kufanya ni tunataka kuangalia kama tumekuwa hit nyota au la. 509 00:42:50,300 --> 00:42:57,960 Kama tumekuwa hit nyota, kama tumekuwa hit mmoja wa Mwandamano kuanzia, 510 00:42:57,960 --> 00:42:59,980 basi tunajua kwamba tumekuwa hit mpya JPEG faili. 511 00:42:59,980 --> 00:43:08,860 Nini sisi utasikia wanataka kufanya ni tunakwenda wanataka kujenga faili mpya katika directory yetu pset4 512 00:43:08,860 --> 00:43:14,480 kuendelea kufanya kwamba faili. 513 00:43:14,480 --> 00:43:18,220 Lakini pia, kama tumekuwa tayari alifanya JPEG kabla, 514 00:43:18,220 --> 00:43:25,620 kisha tunataka kukomesha kwamba faili na kuiondoa kwa folder pset4, 515 00:43:25,620 --> 00:43:29,780 ambapo tutaweza kuwa na faili kwamba kuhifadhiwa kwa sababu kama hatuwezi bayana kwamba tumekuwa kumalizika kwamba JPEG faili, 516 00:43:29,780 --> 00:43:37,290 kisha tutaweza kimsingi kuwa kiasi indeterminate. JPEGs hautakuwa na mwisho. 517 00:43:37,290 --> 00:43:40,840 Hivyo tunataka kuhakikisha kwamba wakati sisi ni kusoma katika faili la JPEG na kuandika kwamba, 518 00:43:40,840 --> 00:43:46,590 tunataka hasa karibu kwamba ili kufungua moja ijayo. 519 00:43:46,590 --> 00:43:48,430 Tutaweza wanataka kuangalia mambo kadhaa. 520 00:43:48,430 --> 00:43:52,880 Tunataka kuangalia kama sisi ni wakati wa kuanza JPEG mpya na buffer wetu 521 00:43:52,880 --> 00:43:56,780 na pia kama sisi tayari wamegundua JPEG kabla 522 00:43:56,780 --> 00:44:03,930 kwa sababu hiyo itabadilisha mchakato wako kidogo. 523 00:44:03,930 --> 00:44:07,880 Hivyo basi baada ya wewe kwenda kupitia njia yote na wewe hit mwisho wa faili, 524 00:44:07,880 --> 00:44:11,570 basi kile utasikia wanataka kufanya ni wewe utakuwa unataka kufunga files wote kwamba sasa kufungua. 525 00:44:11,570 --> 00:44:14,100 Hiyo pengine kuwa mwisho JPEG faili kwamba una, 526 00:44:14,100 --> 00:44:18,930 kama vile faili kadi kwamba tumekuwa kushughulika na. 527 00:44:21,940 --> 00:44:28,670 >> kikwazo cha mwisho tunahitaji kukabiliana na ni jinsi gani ya kweli kufanya faili JPEG 528 00:44:28,670 --> 00:44:31,950 na jinsi ya kweli kuiondoa kwa folder. 529 00:44:33,650 --> 00:44:39,850 pset inahitaji kwamba kila JPEG kwamba kupata kuwa katika muundo ufuatao, 530 00:44:39,850 --> 00:44:43,990 ambapo una idadi jpg.. 531 00:44:43,990 --> 00:44:50,750 idadi, hata kama ni 0, sisi kuiita 000.jpg. 532 00:44:50,750 --> 00:44:55,730 Kila wewe kupata JPEG katika mpango wako, 533 00:44:55,730 --> 00:44:58,040 wewe ni kwenda kutaka jina hilo ili ni kupatikana. 534 00:44:58,040 --> 00:44:59,700 Hii ina maana gani? 535 00:44:59,700 --> 00:45:03,530 Tunahitaji aina ya kuweka wimbo wa jinsi wengi tumekuwa kupatikana 536 00:45:03,530 --> 00:45:08,680 na nini idadi ya kila JPEG lazima. 537 00:45:08,680 --> 00:45:13,800 Hapa sisi ni kwenda kuchukua faida ya kazi sprintf. 538 00:45:13,800 --> 00:45:17,480 Sawa na printf, ambayo tu aina ya prints thamani nje ndani ya terminal, 539 00:45:17,480 --> 00:45:23,910 sprintf Prints faili nje katika folder. 540 00:45:23,910 --> 00:45:30,870 Na hivyo kufanya nini hii ingekuwa kama alikuwa sprintf, cheo, na kisha kamba huko, 541 00:45:30,870 --> 00:45:36,660 ingekuwa magazeti nje 2.jpg. 542 00:45:36,660 --> 00:45:41,020 Kutokana kwamba nimepata imefungwa files yangu kwa usahihi, 543 00:45:41,020 --> 00:45:47,210 ambayo yana faili kwamba mimi alikuwa kuandika nje. 544 00:45:47,210 --> 00:45:50,320 Lakini jambo moja ni kwamba kificho kwamba mimi hapa 545 00:45:50,320 --> 00:45:53,360 haina kabisa kukidhi kile pset inahitaji. 546 00:45:53,360 --> 00:46:02,410 pset inahitaji pili faili JPEG lazima aitwaye 002 badala ya 2 tu. 547 00:46:02,410 --> 00:46:09,160 Hivyo wakati wewe magazeti nje jina, basi labda unaweza kutaka kubadilisha placeholder kidogo. 548 00:46:09,160 --> 00:46:18,140 >> Je, mtu yeyote kumbuka jinsi sisi kuruhusu kwa ajili ya maeneo ya ziada wakati sisi magazeti kitu? 549 00:46:18,140 --> 00:46:22,530 Yeah. >> [Mwanafunzi] Wewe kuweka 3 kati ya ishara na asilimia 2. >> Yeah, kamilifu. 550 00:46:22,530 --> 00:46:25,610 Wewe itabidi kuweka 3 katika kesi hii kwa sababu tunataka nafasi kwa 3. 551 00:46:25,610 --> 00:46:32,590 % 3d pengine kukupa 002.jpg badala ya 2. 552 00:46:32,590 --> 00:46:40,120 Hoja ya kwanza katika kazi sprintf ni kweli safu Char, 553 00:46:40,120 --> 00:46:42,520 ambayo sisi awali alijua kama masharti. 554 00:46:42,520 --> 00:46:50,700 Wale mapenzi, aina ya zaidi kama kuhifadhi muda, tu kuhifadhi string matokeo. 555 00:46:50,700 --> 00:46:54,950 Wewe si kweli kuwa kushughulika na hii, lakini unahitaji kwa pamoja. 556 00:46:54,950 --> 00:47:00,710 >> Kujua kwamba kila jina faili ina idadi, ambayo inachukua hadi herufi tatu, 557 00:47:00,710 --> 00:47:06,770 na kisha jpg., kwa muda gani lazima safu hii? 558 00:47:09,070 --> 00:47:14,310 Mfukuze idadi. Ngapi wahusika katika cheo, katika jina? 559 00:47:18,090 --> 00:47:26,320 Hivyo kuna 3 hashtags, kipindi, jpg. >> [Mwanafunzi] 7. >> 7. Si kabisa. 560 00:47:26,320 --> 00:47:32,000 Sisi ni kwenda wanataka 8 kwa sababu tunataka kwa ajili ya kuruhusu Terminator null pia. 561 00:47:45,340 --> 00:47:49,730 >> Hatimaye, ili tu kuteka mchakato kuwa wewe utakuwa kufanya kwa ajili ya Kuokoa, 562 00:47:49,730 --> 00:47:55,420 wewe na baadhi ya taarifa mwanzo. 563 00:47:55,420 --> 00:48:02,460 Wewe kuendelea mpaka kupata mwanzo wa faili JPEG, 564 00:48:02,460 --> 00:48:07,900 na kwamba inaweza kuwa ama moja ya Mwandamano mbili kuanzia. 565 00:48:07,900 --> 00:48:12,510 Wewe kuendelea kusoma. Kila slash hapa inawakilisha ka 512. 566 00:48:12,510 --> 00:48:22,630 Wewe kuendelea kusoma, kuendelea kusoma mpaka wakutane mwingine mlolongo kuanzia. 567 00:48:22,630 --> 00:48:29,790 Mara tu na kwamba, wewe mwisho JPEG sasa - katika kesi hii, ni moja nyekundu, 568 00:48:29,790 --> 00:48:31,030 hivyo unataka kukomesha hiyo. 569 00:48:31,030 --> 00:48:35,540 Unataka jina sprintf ya kwamba ndani ya folda yako pset4, 570 00:48:35,540 --> 00:48:41,580 kisha unataka kufungua JPEG mpya na kisha kuendelea kusoma 571 00:48:41,580 --> 00:48:46,370 mpaka wakutane ijayo. 572 00:48:46,370 --> 00:48:49,040 Endelea kusoma, kuendelea kusoma, 573 00:48:49,040 --> 00:48:56,290 na kisha hatimaye, hatimaye, utaenda kufikia mwisho wa faili, 574 00:48:56,290 --> 00:49:00,360 na hivyo utasikia wanataka kuifunga JPEG mwisho kwamba wewe walikuwa wakifanya kazi pamoja, 575 00:49:00,360 --> 00:49:08,380 sprintf kwamba ndani ya folda yako pset4, na kisha kuangalia aina ya picha kwamba ve Gotten. 576 00:49:08,380 --> 00:49:12,050 Wale picha ni kweli picha ya wafanyakazi CS50, 577 00:49:12,050 --> 00:49:16,430 na hivyo hii ni sehemu ambapo fun ziada ya pset inakuja katika 578 00:49:16,430 --> 00:49:26,310 ni kwamba wewe ni kushindana katika sehemu yako ya kupata TFS katika picha 579 00:49:26,310 --> 00:49:34,610 na kuchukua picha pamoja nao ili kuthibitisha kuwa umefanya kosa pset 580 00:49:34,610 --> 00:49:37,030 na hivyo unaweza kuona ambayo wafanyakazi wanachama ni katika picha. 581 00:49:37,030 --> 00:49:41,510 Hivyo basi wewe kuchukua picha na wafanyakazi. Wakati mwingine itabidi baada yao chini. 582 00:49:41,510 --> 00:49:44,680 Pengine baadhi yao kujaribu kukimbia mbali na wewe. 583 00:49:44,680 --> 00:49:47,320 Unaweza kuchukua picha na yao. 584 00:49:47,320 --> 00:49:51,190 Hii ni unaoendelea. Ni wakati si kutokana pset ni kutokana. 585 00:49:51,190 --> 00:49:53,340 tarehe ya mwisho yatatangazwa katika spec. 586 00:49:53,340 --> 00:49:58,060 Kisha pamoja na sehemu yako, kwa namna yoyote sehemu inachukua picha zaidi 587 00:49:58,060 --> 00:50:04,430 na wanachama wengi wafanyakazi kushinda tuzo pretty kutisha. 588 00:50:04,430 --> 00:50:08,890 Hiyo ni aina ya motisha ya kupata pset4 yako kumaliza kwa haraka iwezekanavyo 589 00:50:08,890 --> 00:50:10,820 kwa sababu basi unaweza kupata chini ya biashara 590 00:50:10,820 --> 00:50:14,570 wanawinda mbalimbali wanachama wote wafanyakazi CS50. 591 00:50:14,570 --> 00:50:17,500 Hiyo si lazima, ingawa, hivyo mara moja kupata picha, 592 00:50:17,500 --> 00:50:20,310 basi wewe ni kumaliza na pset4. 593 00:50:20,310 --> 00:50:23,970 >> Na mimi nina kumaliza na walkthrough 4, hivyo kuwashukuru wote kwa kuja. 594 00:50:23,970 --> 00:50:29,330 Bahati nzuri na Forensics. [Applause] 595 00:50:29,330 --> 00:50:31,000 [CS50.TV]