1 00:00:00,000 --> 00:00:12,240 >> [Music kucheza] 2 00:00:12,240 --> 00:00:15,870 >> Rob BOWDEN: Hi, mimi nina Rob, hebu kujaribu hii juu ya kwa ukubwa. 3 00:00:15,870 --> 00:00:21,100 Hivyo, sisi ni tena kwenda kuanza na kimsingi nakala ya copy.c, na 4 00:00:21,100 --> 00:00:22,860 kufanya mabadiliko machache. 5 00:00:22,860 --> 00:00:26,280 Kumbuka mara moja sisi kuona mabadiliko, ambapo badala ya kuangalia kuona kama 6 00:00:26,280 --> 00:00:30,440 argc haina sawa 3, tunataka kuangalia kama argc hana sawa 4, tangu 7 00:00:30,440 --> 00:00:34,350 sasa sisi siyo kuchukua tu katika infile na outfile, lakini sisi ni pia kuchukua katika 8 00:00:34,350 --> 00:00:38,980 n, ambayo ni kiasi kwamba sisi ni kuongeza picha ya awali kwa. 9 00:00:38,980 --> 00:00:44,340 Mara baada ya sisi ni kuhakikisha ya kwamba, tunaweza tu kubadilisha n kwa integer kutumia atoi. 10 00:00:44,340 --> 00:00:48,760 >> Kwa hiyo, sasa tunakwenda kujenga baadhi ya Majina bandia, kama wito argv 2 infile, na 11 00:00:48,760 --> 00:00:54,240 argv 3 outfile, kwa sababu argv 2 na argv 3 sio majina na manufaa sana. 12 00:00:54,240 --> 00:00:58,510 Sasa tunataka kuangalia kuhakikisha n ni ndani ya mipaka tunatarajia, ili 13 00:00:58,510 --> 00:01:02,910 spec bayana kwamba kama ni chini ya au sawa na sifuri, au zaidi ya 100, 14 00:01:02,910 --> 00:01:08,580 basi hiyo ni batili resize sababu, na sisi lazima kuwaonya user ya kwamba. 15 00:01:08,580 --> 00:01:13,090 >> Mara baada ya sisi ni zaidi ya yote, tunaweza hatimaye kufungua infile yetu, na sisi haja 16 00:01:13,090 --> 00:01:16,270 kwa makosa kuangalia kuhakikisha kwamba ufunguzi hakuwa na kushindwa kwa sababu fulani. 17 00:01:16,270 --> 00:01:19,860 Sisi pia haja ya kufungua outfile yetu, na tena makosa kuangalia kuhakikisha kwamba 18 00:01:19,860 --> 00:01:21,250 hakuwa na kushindwa kwa sababu fulani. 19 00:01:21,250 --> 00:01:26,270 Lakini kuwa na uhakika kama ufunguzi wa outfile alishindwa kwamba tunahitaji karibu 20 00:01:26,270 --> 00:01:29,040 infile, ambayo ilikuwa tayari kufunguliwa. 21 00:01:29,040 --> 00:01:33,690 >> Hivyo, kuchukua kwamba hakuwa na kushindwa, basi we're - tu kama katika copy.c-- 22 00:01:33,690 --> 00:01:36,140 kwenda kusoma katika header kutoka infile. 23 00:01:36,140 --> 00:01:40,130 Tunakwenda kuhakikisha ni halali bitmap, lakini sasa tunakwenda kufanya baadhi ya 24 00:01:40,130 --> 00:01:41,620 mambo kidogo tofauti. 25 00:01:41,620 --> 00:01:44,870 Hivyo kwanza, tunakwenda kutaka kumbuka upana awali na urefu 26 00:01:44,870 --> 00:01:48,290 ya infile, kwa sababu tunakwenda kubadilika kwa ajili ya outfile. 27 00:01:48,290 --> 00:01:53,890 Hivyo sasa kumbuka kwamba kwa sababu ya ajabu bi.biheight, ni hasi, na 28 00:01:53,890 --> 00:01:58,670 hivyo urefu halisi, katika chanya, sisi unataka kuchukua thamani kabisa. 29 00:01:58,670 --> 00:02:02,580 >> Sasa, padding ni kwenda kuwa sawa hesabu kama ilivyokuwa katika copy.c, 30 00:02:02,580 --> 00:02:06,060 kutumia upana wa zamani, na sasa tuko kweli kwenda na mabadiliko 31 00:02:06,060 --> 00:02:07,320 nini katika header yetu. 32 00:02:07,320 --> 00:02:11,200 Hivyo sisi ni kwenda kuzidisha upana yetu kwa n, tangu sisi ni kuongeza upana na 33 00:02:11,200 --> 00:02:15,100 n, kuzidisha urefu na n, tangu tuko kuongeza na n, na sasa tuna 34 00:02:15,100 --> 00:02:19,250 hesabu kwa padding mpya msingi upana mpya. 35 00:02:19,250 --> 00:02:21,840 >> Basi sasa sisi haja ya kubadili baadhi maeneo mengine katika header yetu. 36 00:02:21,840 --> 00:02:26,890 Bi.biSizeImage zinatakiwa kuwa ukubwa wa ka wote katika saizi 37 00:02:26,890 --> 00:02:28,520 na padding wa picha. 38 00:02:28,520 --> 00:02:34,190 Na hivyo ukubwa wa moja ya mstari wa wetu picha ni ukubwa wa RGB tatu, ukubwa 39 00:02:34,190 --> 00:02:39,430 ya pixel moja, wakati idadi ya saizi katika mstari, pamoja na padding katika 40 00:02:39,430 --> 00:02:40,910 mwisho wa mfululizo. 41 00:02:40,910 --> 00:02:45,200 Na kisha tunakwenda kuzidisha na thamani kamili ya urefu yetu kupata 42 00:02:45,200 --> 00:02:48,350 jumla ya idadi ya ka katika data picha. 43 00:02:48,350 --> 00:02:53,050 bf.bfSize ni jumla ya idadi ya ka katika data yetu ya picha, hivyo 44 00:02:53,050 --> 00:02:56,530 bi.biSizeImage, pamoja na ukubwa wa headers yetu. 45 00:02:56,530 --> 00:02:59,850 Hivyo, kuongeza ukubwa wa faili bitmap header, na ukubwa wa bitmap info 46 00:02:59,850 --> 00:03:00,800 header, OK. 47 00:03:00,800 --> 00:03:03,170 Hivyo kwamba wote sisi haja ya mabadiliko katika headers yetu. 48 00:03:03,170 --> 00:03:07,020 Sasa tutaweza kuandika bitmap file header kwa outfile yetu, na bitmap yetu info 49 00:03:07,020 --> 00:03:09,880 header kwa outfile yetu, na sasa tuko tayari kuanza kwenda 50 00:03:09,880 --> 00:03:11,990 juu ya saizi halisi. 51 00:03:11,990 --> 00:03:15,720 >> Hivyo tunataka iterate juu ya infile ya Scan mistari. 52 00:03:15,720 --> 00:03:17,730 Hivyo tunataka iterate juu ya oldheight. 53 00:03:17,730 --> 00:03:20,830 Hii ni kwa nini sisi zinahitajika kumbuka urefu awali, kabla ya sisi mabadiliko hayo 54 00:03:20,830 --> 00:03:23,040 na kuongezwa ni kwa n. 55 00:03:23,040 --> 00:03:27,810 Sasa sisi ni kwenda kusoma moja mstari wa infile katika 56 00:03:27,810 --> 00:03:30,630 buffer ya ukubwa oldwidth. 57 00:03:30,630 --> 00:03:36,190 Hivyo hapa, sisi ni freading ukubwa wa RGB tatu, moja pixel, na umri wa upana wa 58 00:03:36,190 --> 00:03:39,760 yao kutoka infile katika buffer yetu. 59 00:03:39,760 --> 00:03:43,480 Na kwamba kinaendelea kuwa mzima mstari katika safu hii. 60 00:03:43,480 --> 00:03:50,390 Basi sasa, tunataka iterate mara n kwa magazeti safu hii kwa outfile yetu n mara kwa mara. 61 00:03:50,390 --> 00:03:52,510 Na hivyo kwamba ni nini kitanzi hii ni kufanya. 62 00:03:52,510 --> 00:03:57,910 Hii kitanzi ndani ni iterating juu ya mstari yenyewe, juu ya safu, uchapishaji 63 00:03:57,910 --> 00:04:00,710 kila pixel katika safu n mara kwa mara. 64 00:04:00,710 --> 00:04:04,510 Hivyo hiki 0 ni kuwa kuchapishwa n mara kwa mara, hiki kwanza ni kuwa 65 00:04:04,510 --> 00:04:05,660 kuchapishwa mara n. 66 00:04:05,660 --> 00:04:10,820 Na kwamba aina ya jinsi sisi ni kwenda kwa usawa wadogo katika outfile, na 67 00:04:10,820 --> 00:04:13,390 kitanzi hii, kwani sisi ni wanaoendesha n mara kwa mara, ni jinsi tunakwenda 68 00:04:13,390 --> 00:04:15,580 wima wadogo. 69 00:04:15,580 --> 00:04:19,850 >> Hapa chini, tunaona kwamba tunahitaji kuongeza padding mwishoni mwa kila mstari. 70 00:04:19,850 --> 00:04:25,050 Hiyo ni kwa nini hii ni ndani ya kwa kitanzi hiyo uchapishaji nje safu n ya tu 71 00:04:25,050 --> 00:04:28,400 hii safu moja kutoka infile. 72 00:04:28,400 --> 00:04:32,150 Kisha hapa chini, mimi nina kwenda ruka juu ya padding katika infile, tangu mara moja 73 00:04:32,150 --> 00:04:34,560 sisi ni kosa kwa safu moja ya infile, sisi hawajali 74 00:04:34,560 --> 00:04:35,290 nini padding mara. 75 00:04:35,290 --> 00:04:37,110 Sisi tu wanataka kupata mstari wa pili. 76 00:04:37,110 --> 00:04:40,870 Na kisha tutaweza kitanzi nyuma na kufanya yote hii tena kwa mstari wa pili. 77 00:04:40,870 --> 00:04:44,406 >> Hatimaye, mara moja sisi ni kosa kwa yote, tunaweza kufunga infile, karibu 78 00:04:44,406 --> 00:04:47,430 outfile, na kurudi 0 kwa sababu sisi ni kosa. 79 00:04:47,430 --> 00:04:50,330 >> Jina langu ni Rob, na hii ilikuwa resize. 80 00:04:50,330 --> 00:04:54,934 >> [Music kucheza]