[CHWARAE CERDDORIAETH] ROB BOWDEN: Hi, Im 'Rob, gadewch i ni rhowch gynnig ar hyn ymlaen am faint. Felly, rydym unwaith eto yn mynd i ddechrau gyda bôn copi o'r copy.c, a wneud ychydig o newidiadau. Nodyn ar unwaith rydym yn gweld newid, lle yn hytrach na gwirio i weld os argc nid yw'n gyfartal 3, rydym am i wirio os argc Nid yw gyfartal 4, gan yn awr nid ydym yn unig yn cymryd mewn infile ac outfile, ond rydym ni hefyd yn cymryd yn n, sef y swm ein bod ni'n scaling y ddelwedd gwreiddiol. Unwaith y byddwn yn siwr o hynny, gallwn yn unig trosi n i cyfanrif ddefnyddio atoi. Felly, yn awr rydym yn mynd i greu rhai enwau eraill, ffoniwch argv 2 infile, a argv 3 outfile, oherwydd argv 2 a Nid argv 3 yn enwau ddefnyddiol iawn. Nawr rydym am i wirio i wneud yn siŵr n yn o fewn ffiniau yr ydym yn disgwyl, felly mae'r spec yn nodi bod os yw'n llai na neu'n yn hafal i sero, neu fwy na 100, yna mae hynny'n ffactor newid maint annilys, a dylem rhybuddio y defnyddiwr o hynny. Unwaith y byddwn yn y tu hwnt i hynny i gyd, gallwn yn olaf agor ein infile, ac mae angen at gamgymeriad gwirio i wneud yn siŵr bod y Nid agoriad yn methu am ryw reswm. Mae angen i ni hefyd agor ein outfile, a eto gwall gwirio i wneud yn siŵr bod Nid oedd yn methu am ryw reswm. Ond byddwch yn siŵr a yw'r agoriad y Methodd outfile bod angen i ni gau y infile, a agorwyd yn barod. Felly, gan dybio nad oedd yn methu, yna we're - yn union fel yn copy.c-- mynd i ddarllen yn y pennawd o'r infile. Rydym yn mynd i wneud yn siŵr ei fod yn ddilys didfap, ond erbyn hyn rydym yn mynd i wneud ychydig o pethau ychydig yn wahanol. Felly yn gyntaf, rydym yn mynd i eisiau i cofiwch y lled ac uchder gwreiddiol y infile, oherwydd ein bod yn mynd i yn newid ar gyfer y outfile. Felly nawr cofiwch fod am resymau rhyfedd bi.biheight, yn negyddol, ac felly mae'r uchder gwirioneddol, yn gadarnhaol, rydym yn am gymryd y gwerth absoliwt. Yn awr, mae'r padin yn mynd i fod yr un fath cyfrifiad fel yr oedd yn copy.c, gan ddefnyddio'r hen led, ac yn awr rydym yn mewn gwirionedd yn mynd i newid pa yn ein header. Felly, rydym yn mynd i luosi ein lled gan n, ers i ni yn scaling lled gan n, lluoswch uchder gan n, ers i ni yn graddio gan n, ac yn awr mae gennym y cyfrifiad ar gyfer padin newydd yn seiliedig ar y lled newydd. Felly, yn awr mae angen i newid rhai meysydd eraill yn ein header. Bi.biSizeImage i fod i fod yn maint yr holl bytes yn y picsel a padin y ddelwedd. Ac felly y maint o un rhes o'n ddelwedd yn faint o RGB triphlyg, maint o picsel unigol, gwaith nifer y picsel mewn rhes, yn ogystal â padin ar ddiwedd y rhes. Ac yna rydym yn mynd i luosi hynny drwy gwerth absoliwt ein uchder i gael cyfanswm nifer y bytes yn y data ddelwedd. bf.bfSize yn unig cyfanswm nifer o bytes yn ein data ddelwedd, felly bi.biSizeImage, yn ogystal â'r maint ein penawdau. Felly, gan ychwanegu ar faint y ffeil y didfap pennawd, a maint y gwybodaeth didfap pennawd, OK. Felly dyna i gyd mae angen i ni newid yn ein penawdau. Nawr byddwn yn ysgrifennu y pennawd ffeil didfap i'n outfile, ac mae ein gwybodaeth didfap header i'n outfile, ac yn awr rydym yn barod i ddechrau mynd dros y picsel gwirioneddol. Felly, rydym am i ailadrodd dros sgan llinellau y infile yn. Felly, rydym am i ailadrodd dros oldheight. Dyma pam yr oedd angen inni gofio'r uchder gwreiddiol, cyn i ni ei newid a graddfeydd iddo gan n. Nawr rydym yn mynd i ddarllen un res y infile i mewn i byffer o faint oldwidth. Felly dyma, rydym yn freading maint RGB triphlyg, un picsel, a hen lled arnynt gan y infile i mewn i'n byffer. Ac mae hynny'n mynd i fod yn gyfan rhwyfo mewn amrywiaeth hwn. Felly nawr, rydym yn awyddus i ailadrodd amseroedd n i argraffwch y rhes hwn i'n outfile n amser. Ac felly dyna beth ddolen hon yn ei wneud. Mae'r ddolen mewnol yn cael ei bwysleisio'r dros y rhes ei hun, dros y casgliad, argraffu bob picsel yn yr arae n amser. Felly mae'r elfen 0 cael ei argraffu n brydiau, mae'r elfen gyntaf yn cael ei printiedig amseroedd n. A dyna sy'n fath o sut yr ydym yn mynd i llorweddol raddfa yn y outfile, a dolen hwn, gan ein bod yn dolennu n adegau, yw sut rydym yn mynd i raddfa fertigol. I lawr yma, rydym yn gweld bod angen ychwanegu y padin ar ddiwedd pob rhes. 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 yr un rhes o'r infile. Yna i lawr yma, yr wyf i'n mynd i neidio dros y padin yn y infile, gan fod unwaith rydym yn ei wneud gyda un rhes o infile, nid ydym yn poeni am beth oedd y padin oedd. Rydym yn unig yn awyddus i gyrraedd yr ail reng. Ac yna rydym yn annhymerus 'dolen yn ôl ac yn gwneud popeth hyn eto ar gyfer yr ail reng. Yn olaf, ar ôl i ni yn ei wneud gyda'r holl hynny, gallwn gau'r infile, yn agos y outfile, a dychwelyd 0 oherwydd ein bod yn ei wneud. Fy enw i yw Rob, ac roedd hyn yn newid maint. [CHWARAE CERDDORIAETH]