[CHWARAE CERDDORIAETH] ROB BOWDEN: Hi. Rwy'n Rob, a gadewch i ni obeithio y ateb hwn yn eich helpu i roi ar y ffordd i adferiad. Felly, gadewch i ni ddechrau arni. Rydym yn gweld bod unwaith rydym yn yn unig i wneud yn siŵr ein bod ni'n ddefnyddio Adennill yn gywir. Felly, dylai'r defnydd yn unig fod yn rhywbeth fel dot slaes adennill. Nawr rydym yn mynd i agor disgwyliedig gerdyn dot ffeil amrwd. Rydym yn gweld yma ein bod yn defnyddio'r gyson enw ffeil tanlinellu crai, sydd i fyny yma rydym wedi hash ddiffinio fel cerdyn dot amrwd. OK. Felly, mae angen i ni wneud yn siwr bod agor yn llwyddiannus oherwydd os yw'n nid oedd, yna dylem rhybuddio y defnyddiwr. Ond gan dybio ei fod yn gwneud hynny, rydym yn awr yn mynd i ddatgan byffer o faint JPEG Enw Ffeil hyd. Felly, mae hyn yn mynd i fod y byffer sydd rydym yn mynd i sprintf i mewn. Felly beth yw ffeil JPEG hyd enw? I fyny yma, gwelwn ei fod yn hash a ddiffinnir fel wyth. Felly pam wyth? Dda y bydd ffeil roddir yn cael ei enwi rhywbeth fel sero sero sero. JPG ac yna rydym angen slaes sero. Felly mae angen byffer y gall storio wyth gymeriadau. Nawr rydym yn mynd i gael cownter sy'n yn mynd i gadw golwg ar y JPEG rhif rydym yn dod o hyd. Ac yn olaf, rydym yn mynd i gael Ffeil JPEG sydd yn null y lle cyntaf sydd yn mynd i fod yn hyn o bryd agor ffeil ein bod yn ysgrifennu at. Nawr rydym yn mynd i gael byffer ychwanegol. Nid yw hyn yr un fath fel ein sprintf byffer lle byffer hwn yw'r un ein bod yn darllen yn y data oddi wrth y cerdyn dot amrwd. Felly y byffer yn mynd i fod o chars heb ei arwyddo, yr ydych yn gallu yn y bôn yn ein trin yn bytes, ac mae'n yn mynd i fod o faint bloc maint lle, fel yr ydym yn dweud wrthych, maint bloc yn 512. Felly, JPEG gallwch drin popeth fel blociau o 512 bytes. Nawr rydym yn mynd i ddolen dros y ffeil cyfan. Rydym yn mynd i f darllen i mewn i'n byffer un o weithiau maint bloc beit o y cerdyn dot ffeil amrwd. Nawr beth mae f ddarllen dychwelyd? Mae'n dychwelyd y nifer o eitemau ei fod yn darllen yn llwyddiannus. Felly, os llwyddodd i ddarllen 512 bytes, yna yr ydym am weld a oedd hyn yn JPEG neu ei ysgrifennu i ffeil JPEG. Ac os nad oedd yn dychwelyd 512 bytes, yna naill ai y ffeil wedi dod i ben yn ac os felly, byddwn yn torri allan o'r y dolen, neu mae rhyw fath o wall ac os felly byddwn hefyd yn torri allan o y y ddolen, ond byddwn am roi gwybod Aeth y rhywbeth o'i le. OK. Felly, gan dybio ein bod yn darllen yn llwyddiannus yn 512 bytes, rydym am i wirio yn gyntaf i wneud y bytes hyn yr ydym yn newydd ddarllen mewn dechrau JPEG. Felly, os yw JPEG header ein byffer. Nawr yr hyn y mae'n ei JPEG header wneud? Gadewch i ni edrych. I fyny yma, rydym yn gweld bod y swyddogaeth hon yn dychwelyd tarw, a bod y tarw - yn dda yma, rydym yn edrych i weld os header sero yn dychwelyd gyson hwn ac header un yw gyson hwn ac header dau yw gyson hwn, header thri yw hwn neu hon gyson lle mae pob cysonion hyn yn dim ond hash diffinio dde yma ac maent yn yn union yr hyn yr ydym yn dweud chi yn y fanyleb bod JPEG yn dechrau gyda. Ac felly y swyddogaeth hon yn unig yn mynd i dychwelyd wir os byffer hwn yn cynrychioli ddechrau JPEG newydd a ffug fel arall. OK. Felly, os yw hyn yn cynrychioli JPEG newydd, Yna cyntaf i ni am wirio i weld os Nid yw ffeil JPEG yn hafal i null, ac os felly byddwn gau. Ac felly pam mae angen i ni wirio i weld os nad yw'n null? Wel mae'r JPEG cyntaf iawn ein bod yn ddod o hyd i ni fyddwn eisoes ffeil JPEG agored. Ac felly, os ydym yn ceisio cau'r hynny, yna nid ydym yn gwneud rhywbeth hollol iawn. Ond mae pob JPEG dilynol a rydym yn agor, rydym am i gau y ffeil flaenorol. Felly, yn awr rydym yn mynd i ddefnyddio sprintf wrth i ni dweud o'r blaen lle'r ydym yn defnyddio'r enw ffeil byffer JPEG. Ac rydym yn mynd i ddefnyddio ffeil JPEG enwi fformat fel ein fformat. A beth yw hynny? I fyny yma, yr ydym yn gweld ei fod yn y cant sero 3D.JPEG lle y sero tri yn unig yn dweud y byddwn yn defnyddio tair gyfanrifau ar gyfer hyn padio gyda sero. Felly, mae hyn yw sut y byddwn yn mynd sero sero one.JPEG a sero 10.JPEG ac yn y blaen. Rydym yn mynd i ddefnyddio sprintf. A'r cyfanrif ein bod yn mewnosod i mewn i'r llinyn yn JPEG fferru adennill, sydd yn wreiddiol sero. Felly agorodd y ffeil cyntaf yn mynd i fod yn sero sero sero dot JPEG. Ac yna rydym yn incrementing ei felly mae'r Bydd ffeil nesaf rydym yn agor fod yn sero sero un dot JPEG a byddwn yn cynyddiad ei eto felly bydd yn sero sero dau dot JPEG ac yn y blaen. Mae pob hawl. Felly, yn awr y tu mewn ffeil JPEG enw, mae gennym enw'r ffeil yr ydym am. Gallwn f agor y ffeil ar gyfer ysgrifennu. OK. Ac unwaith eto, mae angen i ni wirio i wneud yn siŵr bod y ffeil yn llwyddiannus agor ers os oedd na, yna roedd rhywfaint o gamgymeriad. Felly, nawr rydym wedi gotten heibio mae hyn yn rhan JPEG. Ac yma, rydym yn gweld ein bod yn mynd i ysgrifennu at y JPEG. Ond rydym yn gyntaf mae'n rhaid gwiriad hwn sy'n dweud os nad yw ffeil JPEG yn null cyfartal. Pam mae angen hynny? Wel ffeil JPEG hafal null pan fyddwn yn Ar hyn o bryd yn cael JPEG agored. Beth os bydd cerdyn dot yn dechrau crai gyda criw o bytes sy'n nid ydynt yn cynrychioli JPEG? Yna, rydym yn mynd i eisiau i hepgor bytes hynny. Os nad oes gennym y gwiriad hwn, yna rydym yn mynd i ysgrifennu at heb ei agor ffeilio'r 512 bytes cyntaf y cerdyn sydd ddim yn dda. OK. Felly, gan dybio gennym ffeil agored, yna rydym yn mynd i ysgrifennu i'r ffeil y 512 bytes sydd gennym yn ein byffer. Ac rydym yn gwirio unwaith eto i wneud yn yn siwr bod y 512 bytes llwyddiannus eu hysgrifennu oherwydd os nad oeddent yn ysgrifenedig yn llwyddiannus, yna rhywbeth aeth o'i le. Byddwn yn cau ein ffeil, print that aeth rhywbeth o'i le, a dychwelyd. Gan dybio popeth yn mynd yn iawn, yna byddwn yn cadw dolennu cau'r hen ffeil, agor y ffeil newydd, ysgrifennu data i'r ffeil newydd, ac yn y blaen ar hyd yn olaf, mae hyn yn f darllen dychwelyd sero sy'n golygu bod y ffeil yn cael ei wneud. Felly nawr bod y darlleniad cerdyn i ben, rydym yn weld ein bod yn mynd i f cau'r ffeil diwethaf yr oedd gennym ar agor, ond rydym yn gwirio os ffeil JPEG yn null nid gyfartal. Wel mae'r f agos yn gwneud synnwyr oherwydd fel y rydym yn agor ffeiliau, rydym yn cau'r rhwyd y ffeil blaenorol, ond yr olaf un ffeil a agorodd ydym byth yn cael ei gau. Felly, dyna beth mae hyn yn ei wneud. Ond pam mae angen i ni edrych am null? Wel nid oedd beth os cerdyn dot amrwd cael JPEG un tu mewn iddo? Yn yr achos hwnnw, byddai gennym byth yn agor ffeil. Ac os ydym byth yn agor ffeil, dylem am roi cynnig i gau'r ffeil. Felly, dyna beth gwiriad hwn yn ei wneud. Nawr dyma, fel y dywedais o'r blaen, gallem wedi torri bod y ddolen naill ai os y cerdyn wedi dod i ben, neu os oes rhyw wall ddarllen o'r cerdyn. Felly, mae hyn yn edrych i weld a oedd gwall yn darllen oddi wrth y cerdyn, yn ac os felly, byddwn yn dweud bod Roedd darlleniad gwall. Nid ydym am i'r defnyddiwr i feddwl Aeth popeth yn llwyddiannus. A byddwn yn dychwelyd un ar gyfer camgymeriad. Yn olaf, byddwn yn f cau ein ffeil crai, ein cerdyn dot amrwd, i ddangos bod Aeth popeth yn dda a dychwelyd sero a dyna ni. Fy enw i yw Rob ac roedd hyn yn Adennill. [CHWARAE CERDDORIAETH]