1 00:00:00,000 --> 00:00:12,240 >> [CHWARAE CERDDORIAETH] 2 00:00:12,240 --> 00:00:15,870 >> ROB BOWDEN: Hi, Im 'Rob, gadewch i ni rhowch gynnig ar hyn ymlaen am faint. 3 00:00:15,870 --> 00:00:21,100 Felly, rydym unwaith eto yn mynd i ddechrau gyda bôn copi o'r copy.c, a 4 00:00:21,100 --> 00:00:22,860 wneud ychydig o newidiadau. 5 00:00:22,860 --> 00:00:26,280 Nodyn ar unwaith rydym yn gweld newid, lle yn hytrach na gwirio i weld os 6 00:00:26,280 --> 00:00:30,440 argc nid yw'n gyfartal 3, rydym am i wirio os argc Nid yw gyfartal 4, gan 7 00:00:30,440 --> 00:00:34,350 yn awr nid ydym yn unig yn cymryd mewn infile ac outfile, ond rydym ni hefyd yn cymryd yn 8 00:00:34,350 --> 00:00:38,980 n, sef y swm ein bod ni'n scaling y ddelwedd gwreiddiol. 9 00:00:38,980 --> 00:00:44,340 Unwaith y byddwn yn siwr o hynny, gallwn yn unig trosi n i cyfanrif ddefnyddio atoi. 10 00:00:44,340 --> 00:00:48,760 >> Felly, yn awr rydym yn mynd i greu rhai enwau eraill, ffoniwch argv 2 infile, a 11 00:00:48,760 --> 00:00:54,240 argv 3 outfile, oherwydd argv 2 a Nid argv 3 yn enwau ddefnyddiol iawn. 12 00:00:54,240 --> 00:00:58,510 Nawr rydym am i wirio i wneud yn siŵr n yn o fewn ffiniau yr ydym yn disgwyl, felly mae'r 13 00:00:58,510 --> 00:01:02,910 spec yn nodi bod os yw'n llai na neu'n yn hafal i sero, neu fwy na 100, 14 00:01:02,910 --> 00:01:08,580 yna mae hynny'n ffactor newid maint annilys, a dylem rhybuddio y defnyddiwr o hynny. 15 00:01:08,580 --> 00:01:13,090 >> Unwaith y byddwn yn y tu hwnt i hynny i gyd, gallwn yn olaf agor ein infile, ac mae angen 16 00:01:13,090 --> 00:01:16,270 at gamgymeriad gwirio i wneud yn siŵr bod y Nid agoriad yn methu am ryw reswm. 17 00:01:16,270 --> 00:01:19,860 Mae angen i ni hefyd agor ein outfile, a eto gwall gwirio i wneud yn siŵr bod 18 00:01:19,860 --> 00:01:21,250 Nid oedd yn methu am ryw reswm. 19 00:01:21,250 --> 00:01:26,270 Ond byddwch yn siŵr a yw'r agoriad y Methodd outfile bod angen i ni gau 20 00:01:26,270 --> 00:01:29,040 y infile, a agorwyd yn barod. 21 00:01:29,040 --> 00:01:33,690 >> Felly, gan dybio nad oedd yn methu, yna we're - yn union fel yn copy.c-- 22 00:01:33,690 --> 00:01:36,140 mynd i ddarllen yn y pennawd o'r infile. 23 00:01:36,140 --> 00:01:40,130 Rydym yn mynd i wneud yn siŵr ei fod yn ddilys didfap, ond erbyn hyn rydym yn mynd i wneud ychydig o 24 00:01:40,130 --> 00:01:41,620 pethau ychydig yn wahanol. 25 00:01:41,620 --> 00:01:44,870 Felly yn gyntaf, rydym yn mynd i eisiau i cofiwch y lled ac uchder gwreiddiol 26 00:01:44,870 --> 00:01:48,290 y infile, oherwydd ein bod yn mynd i yn newid ar gyfer y outfile. 27 00:01:48,290 --> 00:01:53,890 Felly nawr cofiwch fod am resymau rhyfedd bi.biheight, yn negyddol, ac 28 00:01:53,890 --> 00:01:58,670 felly mae'r uchder gwirioneddol, yn gadarnhaol, rydym yn am gymryd y gwerth absoliwt. 29 00:01:58,670 --> 00:02:02,580 >> Yn awr, mae'r padin yn mynd i fod yr un fath cyfrifiad fel yr oedd yn copy.c, 30 00:02:02,580 --> 00:02:06,060 gan ddefnyddio'r hen led, ac yn awr rydym yn mewn gwirionedd yn mynd i newid 31 00:02:06,060 --> 00:02:07,320 pa yn ein header. 32 00:02:07,320 --> 00:02:11,200 Felly, rydym yn mynd i luosi ein lled gan n, ers i ni yn scaling lled gan 33 00:02:11,200 --> 00:02:15,100 n, lluoswch uchder gan n, ers i ni yn graddio gan n, ac yn awr mae gennym 34 00:02:15,100 --> 00:02:19,250 y cyfrifiad ar gyfer padin newydd yn seiliedig ar y lled newydd. 35 00:02:19,250 --> 00:02:21,840 >> Felly, yn awr mae angen i newid rhai meysydd eraill yn ein header. 36 00:02:21,840 --> 00:02:26,890 Bi.biSizeImage i fod i fod yn maint yr holl bytes yn y picsel 37 00:02:26,890 --> 00:02:28,520 a padin y ddelwedd. 38 00:02:28,520 --> 00:02:34,190 Ac felly y maint o un rhes o'n ddelwedd yn faint o RGB triphlyg, maint 39 00:02:34,190 --> 00:02:39,430 o picsel unigol, gwaith nifer y picsel mewn rhes, yn ogystal â padin ar 40 00:02:39,430 --> 00:02:40,910 ddiwedd y rhes. 41 00:02:40,910 --> 00:02:45,200 Ac yna rydym yn mynd i luosi hynny drwy gwerth absoliwt ein uchder i gael 42 00:02:45,200 --> 00:02:48,350 cyfanswm nifer y bytes yn y data ddelwedd. 43 00:02:48,350 --> 00:02:53,050 bf.bfSize yn unig cyfanswm nifer o bytes yn ein data ddelwedd, felly 44 00:02:53,050 --> 00:02:56,530 bi.biSizeImage, yn ogystal â'r maint ein penawdau. 45 00:02:56,530 --> 00:02:59,850 Felly, gan ychwanegu ar faint y ffeil y didfap pennawd, a maint y gwybodaeth didfap 46 00:02:59,850 --> 00:03:00,800 pennawd, OK. 47 00:03:00,800 --> 00:03:03,170 Felly dyna i gyd mae angen i ni newid yn ein penawdau. 48 00:03:03,170 --> 00:03:07,020 Nawr byddwn yn ysgrifennu y pennawd ffeil didfap i'n outfile, ac mae ein gwybodaeth didfap 49 00:03:07,020 --> 00:03:09,880 header i'n outfile, ac yn awr rydym yn barod i ddechrau mynd 50 00:03:09,880 --> 00:03:11,990 dros y picsel gwirioneddol. 51 00:03:11,990 --> 00:03:15,720 >> Felly, rydym am i ailadrodd dros sgan llinellau y infile yn. 52 00:03:15,720 --> 00:03:17,730 Felly, rydym am i ailadrodd dros oldheight. 53 00:03:17,730 --> 00:03:20,830 Dyma pam yr oedd angen inni gofio'r uchder gwreiddiol, cyn i ni ei newid 54 00:03:20,830 --> 00:03:23,040 a graddfeydd iddo gan n. 55 00:03:23,040 --> 00:03:27,810 Nawr rydym yn mynd i ddarllen un res y infile i mewn i 56 00:03:27,810 --> 00:03:30,630 byffer o faint oldwidth. 57 00:03:30,630 --> 00:03:36,190 Felly dyma, rydym yn freading maint RGB triphlyg, un picsel, a hen lled 58 00:03:36,190 --> 00:03:39,760 arnynt gan y infile i mewn i'n byffer. 59 00:03:39,760 --> 00:03:43,480 Ac mae hynny'n mynd i fod yn gyfan rhwyfo mewn amrywiaeth hwn. 60 00:03:43,480 --> 00:03:50,390 Felly nawr, rydym yn awyddus i ailadrodd amseroedd n i argraffwch y rhes hwn i'n outfile n amser. 61 00:03:50,390 --> 00:03:52,510 Ac felly dyna beth ddolen hon yn ei wneud. 62 00:03:52,510 --> 00:03:57,910 Mae'r ddolen mewnol yn cael ei bwysleisio'r dros y rhes ei hun, dros y casgliad, argraffu 63 00:03:57,910 --> 00:04:00,710 bob picsel yn yr arae n amser. 64 00:04:00,710 --> 00:04:04,510 Felly mae'r elfen 0 cael ei argraffu n brydiau, mae'r elfen gyntaf yn cael ei 65 00:04:04,510 --> 00:04:05,660 printiedig amseroedd n. 66 00:04:05,660 --> 00:04:10,820 A dyna sy'n fath o sut yr ydym yn mynd i llorweddol raddfa yn y outfile, a 67 00:04:10,820 --> 00:04:13,390 dolen hwn, gan ein bod yn dolennu n adegau, yw sut rydym yn mynd i 68 00:04:13,390 --> 00:04:15,580 raddfa fertigol. 69 00:04:15,580 --> 00:04:19,850 >> I lawr yma, rydym yn gweld bod angen ychwanegu y padin ar ddiwedd pob rhes. 70 00:04:19,850 --> 00:04:25,050 Dyna pam mae hyn yn ar gyfer y tu mewn i'r ddolen sy'n cael ei argraffu ar y n rhesi o ddim ond 71 00:04:25,050 --> 00:04:28,400 yr un rhes o'r infile. 72 00:04:28,400 --> 00:04:32,150 Yna i lawr yma, yr wyf i'n mynd i neidio dros y padin yn y infile, gan fod unwaith 73 00:04:32,150 --> 00:04:34,560 rydym yn ei wneud gyda un rhes o infile, nid ydym yn poeni am 74 00:04:34,560 --> 00:04:35,290 beth oedd y padin oedd. 75 00:04:35,290 --> 00:04:37,110 Rydym yn unig yn awyddus i gyrraedd yr ail reng. 76 00:04:37,110 --> 00:04:40,870 Ac yna rydym yn annhymerus 'dolen yn ôl ac yn gwneud popeth hyn eto ar gyfer yr ail reng. 77 00:04:40,870 --> 00:04:44,406 >> Yn olaf, ar ôl i ni yn ei wneud gyda'r holl hynny, gallwn gau'r infile, yn agos 78 00:04:44,406 --> 00:04:47,430 y outfile, a dychwelyd 0 oherwydd ein bod yn ei wneud. 79 00:04:47,430 --> 00:04:50,330 >> Fy enw i yw Rob, ac roedd hyn yn newid maint. 80 00:04:50,330 --> 00:04:54,934 >> [CHWARAE CERDDORIAETH]