>> [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]