1 00:00:00,000 --> 00:00:00,494 2 00:00:00,494 --> 00:00:13,350 >> [CHWARAE CERDDORIAETH] 3 00:00:13,350 --> 00:00:14,080 >> ROB BOWDEN: Hi. 4 00:00:14,080 --> 00:00:17,550 Rwy'n Rob, a gadewch i ni obeithio y ateb hwn yn eich helpu i roi 5 00:00:17,550 --> 00:00:19,600 ar y ffordd i adferiad. 6 00:00:19,600 --> 00:00:22,700 Felly, gadewch i ni ddechrau arni. 7 00:00:22,700 --> 00:00:25,660 >> Rydym yn gweld bod unwaith rydym yn yn unig i wneud yn siŵr ein bod ni'n 8 00:00:25,660 --> 00:00:27,170 ddefnyddio Adennill yn gywir. 9 00:00:27,170 --> 00:00:31,490 Felly, dylai'r defnydd yn unig fod yn rhywbeth fel dot slaes adennill. 10 00:00:31,490 --> 00:00:35,500 >> Nawr rydym yn mynd i agor disgwyliedig gerdyn dot ffeil amrwd. 11 00:00:35,500 --> 00:00:39,740 Rydym yn gweld yma ein bod yn defnyddio'r gyson enw ffeil tanlinellu crai, 12 00:00:39,740 --> 00:00:44,200 sydd i fyny yma rydym wedi hash ddiffinio fel cerdyn dot amrwd. 13 00:00:44,200 --> 00:00:45,030 OK. 14 00:00:45,030 --> 00:00:48,210 >> Felly, mae angen i ni wneud yn siwr bod agor yn llwyddiannus oherwydd os yw'n 15 00:00:48,210 --> 00:00:51,150 nid oedd, yna dylem rhybuddio y defnyddiwr. 16 00:00:51,150 --> 00:00:56,770 Ond gan dybio ei fod yn gwneud hynny, rydym yn awr yn mynd i ddatgan byffer o faint JPEG 17 00:00:56,770 --> 00:00:58,170 Enw Ffeil hyd. 18 00:00:58,170 --> 00:01:02,060 Felly, mae hyn yn mynd i fod y byffer sydd rydym yn mynd i sprintf i mewn. 19 00:01:02,060 --> 00:01:04,360 >> Felly beth yw ffeil JPEG hyd enw? 20 00:01:04,360 --> 00:01:08,490 I fyny yma, gwelwn ei fod yn hash a ddiffinnir fel wyth. 21 00:01:08,490 --> 00:01:10,670 Felly pam wyth? 22 00:01:10,670 --> 00:01:15,150 Dda y bydd ffeil roddir yn cael ei enwi rhywbeth fel sero sero sero. 23 00:01:15,150 --> 00:01:19,460 JPG ac yna rydym angen slaes sero. 24 00:01:19,460 --> 00:01:22,720 Felly mae angen byffer y gall storio wyth gymeriadau. 25 00:01:22,720 --> 00:01:25,190 Nawr rydym yn mynd i gael cownter sy'n yn mynd i gadw golwg ar y 26 00:01:25,190 --> 00:01:27,780 JPEG rhif rydym yn dod o hyd. 27 00:01:27,780 --> 00:01:31,590 >> Ac yn olaf, rydym yn mynd i gael Ffeil JPEG sydd yn null y lle cyntaf 28 00:01:31,590 --> 00:01:35,920 sydd yn mynd i fod yn hyn o bryd agor ffeil ein bod yn ysgrifennu at. 29 00:01:35,920 --> 00:01:37,540 Nawr rydym yn mynd i gael byffer ychwanegol. 30 00:01:37,540 --> 00:01:41,350 Nid yw hyn yr un fath fel ein sprintf byffer lle byffer hwn yw'r un 31 00:01:41,350 --> 00:01:45,020 ein bod yn darllen yn y data oddi wrth y cerdyn dot amrwd. 32 00:01:45,020 --> 00:01:48,900 >> Felly y byffer yn mynd i fod o chars heb ei arwyddo, yr ydych yn gallu 33 00:01:48,900 --> 00:01:53,560 yn y bôn yn ein trin yn bytes, ac mae'n yn mynd i fod o faint bloc maint 34 00:01:53,560 --> 00:01:57,950 lle, fel yr ydym yn dweud wrthych, maint bloc yn 512. 35 00:01:57,950 --> 00:02:03,070 Felly, JPEG gallwch drin popeth fel blociau o 512 bytes. 36 00:02:03,070 --> 00:02:05,890 >> Nawr rydym yn mynd i ddolen dros y ffeil cyfan. 37 00:02:05,890 --> 00:02:12,980 Rydym yn mynd i f darllen i mewn i'n byffer un o weithiau maint bloc beit o 38 00:02:12,980 --> 00:02:14,710 y cerdyn dot ffeil amrwd. 39 00:02:14,710 --> 00:02:16,630 Nawr beth mae f ddarllen dychwelyd? 40 00:02:16,630 --> 00:02:20,050 Mae'n dychwelyd y nifer o eitemau ei fod yn darllen yn llwyddiannus. 41 00:02:20,050 --> 00:02:27,310 Felly, os llwyddodd i ddarllen 512 bytes, yna yr ydym am weld a oedd hyn yn 42 00:02:27,310 --> 00:02:29,700 JPEG neu ei ysgrifennu i ffeil JPEG. 43 00:02:29,700 --> 00:02:34,450 Ac os nad oedd yn dychwelyd 512 bytes, yna naill ai y ffeil wedi dod i ben yn 44 00:02:34,450 --> 00:02:37,870 ac os felly, byddwn yn torri allan o'r y dolen, neu mae rhyw fath o wall 45 00:02:37,870 --> 00:02:40,300 ac os felly byddwn hefyd yn torri allan o y y ddolen, ond byddwn am roi gwybod 46 00:02:40,300 --> 00:02:41,990 Aeth y rhywbeth o'i le. 47 00:02:41,990 --> 00:02:42,290 >> OK. 48 00:02:42,290 --> 00:02:47,630 Felly, gan dybio ein bod yn darllen yn llwyddiannus yn 512 bytes, rydym am i wirio yn gyntaf 49 00:02:47,630 --> 00:02:53,070 i wneud y bytes hyn yr ydym yn newydd ddarllen mewn dechrau JPEG. 50 00:02:53,070 --> 00:02:56,430 Felly, os yw JPEG header ein byffer. 51 00:02:56,430 --> 00:02:58,460 Nawr yr hyn y mae'n ei JPEG header wneud? 52 00:02:58,460 --> 00:03:00,120 Gadewch i ni edrych. 53 00:03:00,120 --> 00:03:05,270 >> I fyny yma, rydym yn gweld bod y swyddogaeth hon yn dychwelyd tarw, a bod y tarw - 54 00:03:05,270 --> 00:03:08,820 yn dda yma, rydym yn edrych i weld os header sero yn dychwelyd gyson hwn ac 55 00:03:08,820 --> 00:03:11,880 header un yw gyson hwn ac header dau yw gyson hwn, 56 00:03:11,880 --> 00:03:15,640 header thri yw hwn neu hon gyson lle mae pob cysonion hyn yn 57 00:03:15,640 --> 00:03:20,340 dim ond hash diffinio dde yma ac maent yn yn union yr hyn yr ydym yn dweud chi yn y fanyleb 58 00:03:20,340 --> 00:03:22,700 bod JPEG yn dechrau gyda. 59 00:03:22,700 --> 00:03:27,300 Ac felly y swyddogaeth hon yn unig yn mynd i dychwelyd wir os byffer hwn yn cynrychioli 60 00:03:27,300 --> 00:03:31,750 ddechrau JPEG newydd a ffug fel arall. 61 00:03:31,750 --> 00:03:32,520 >> OK. 62 00:03:32,520 --> 00:03:38,490 Felly, os yw hyn yn cynrychioli JPEG newydd, Yna cyntaf i ni am wirio i weld os 63 00:03:38,490 --> 00:03:42,030 Nid yw ffeil JPEG yn hafal i null, ac os felly byddwn gau. 64 00:03:42,030 --> 00:03:44,940 Ac felly pam mae angen i ni wirio i weld os nad yw'n null? 65 00:03:44,940 --> 00:03:48,980 Wel mae'r JPEG cyntaf iawn ein bod yn ddod o hyd i ni fyddwn eisoes 66 00:03:48,980 --> 00:03:50,440 ffeil JPEG agored. 67 00:03:50,440 --> 00:03:55,580 Ac felly, os ydym yn ceisio cau'r hynny, yna nid ydym yn gwneud rhywbeth hollol iawn. 68 00:03:55,580 --> 00:03:59,090 >> Ond mae pob JPEG dilynol a rydym yn agor, rydym am i gau 69 00:03:59,090 --> 00:04:00,710 y ffeil flaenorol. 70 00:04:00,710 --> 00:04:04,630 Felly, yn awr rydym yn mynd i ddefnyddio sprintf wrth i ni dweud o'r blaen lle'r ydym yn defnyddio'r 71 00:04:04,630 --> 00:04:06,280 enw ffeil byffer JPEG. 72 00:04:06,280 --> 00:04:09,870 Ac rydym yn mynd i ddefnyddio ffeil JPEG enwi fformat fel ein fformat. 73 00:04:09,870 --> 00:04:12,030 A beth yw hynny? 74 00:04:12,030 --> 00:04:18,450 I fyny yma, yr ydym yn gweld ei fod yn y cant sero 3D.JPEG lle y sero tri yn unig 75 00:04:18,450 --> 00:04:22,089 yn dweud y byddwn yn defnyddio tair gyfanrifau ar gyfer hyn padio gyda sero. 76 00:04:22,089 --> 00:04:27,470 Felly, mae hyn yw sut y byddwn yn mynd sero sero one.JPEG a sero 10.JPEG ac yn y blaen. 77 00:04:27,470 --> 00:04:29,060 >> Rydym yn mynd i ddefnyddio sprintf. 78 00:04:29,060 --> 00:04:33,760 A'r cyfanrif ein bod yn mewnosod i mewn i'r llinyn yn JPEG fferru 79 00:04:33,760 --> 00:04:36,380 adennill, sydd yn wreiddiol sero. 80 00:04:36,380 --> 00:04:39,950 Felly agorodd y ffeil cyntaf yn mynd i fod yn sero sero sero dot JPEG. 81 00:04:39,950 --> 00:04:43,330 Ac yna rydym yn incrementing ei felly mae'r Bydd ffeil nesaf rydym yn agor fod yn sero sero 82 00:04:43,330 --> 00:04:46,830 un dot JPEG a byddwn yn cynyddiad ei eto felly bydd yn sero sero dau dot 83 00:04:46,830 --> 00:04:49,100 JPEG ac yn y blaen. 84 00:04:49,100 --> 00:04:49,850 >> Mae pob hawl. 85 00:04:49,850 --> 00:04:53,210 Felly, yn awr y tu mewn ffeil JPEG enw, mae gennym enw'r 86 00:04:53,210 --> 00:04:54,990 ffeil yr ydym am. 87 00:04:54,990 --> 00:04:58,640 Gallwn f agor y ffeil ar gyfer ysgrifennu. 88 00:04:58,640 --> 00:04:59,170 OK. 89 00:04:59,170 --> 00:05:02,820 Ac unwaith eto, mae angen i ni wirio i wneud yn siŵr bod y ffeil yn llwyddiannus 90 00:05:02,820 --> 00:05:08,460 agor ers os oedd na, yna roedd rhywfaint o gamgymeriad. 91 00:05:08,460 --> 00:05:13,100 >> Felly, nawr rydym wedi gotten heibio mae hyn yn rhan JPEG. 92 00:05:13,100 --> 00:05:16,390 Ac yma, rydym yn gweld ein bod yn mynd i ysgrifennu at y JPEG. 93 00:05:16,390 --> 00:05:20,980 Ond rydym yn gyntaf mae'n rhaid gwiriad hwn sy'n dweud os nad yw ffeil JPEG yn null cyfartal. 94 00:05:20,980 --> 00:05:22,490 Pam mae angen hynny? 95 00:05:22,490 --> 00:05:28,020 Wel ffeil JPEG hafal null pan fyddwn yn Ar hyn o bryd yn cael JPEG agored. 96 00:05:28,020 --> 00:05:31,870 >> Beth os bydd cerdyn dot yn dechrau crai gyda criw o bytes sy'n 97 00:05:31,870 --> 00:05:33,510 nid ydynt yn cynrychioli JPEG? 98 00:05:33,510 --> 00:05:36,240 Yna, rydym yn mynd i eisiau i hepgor bytes hynny. 99 00:05:36,240 --> 00:05:39,600 Os nad oes gennym y gwiriad hwn, yna rydym yn mynd i ysgrifennu at heb ei agor 100 00:05:39,600 --> 00:05:45,540 ffeilio'r 512 bytes cyntaf y cerdyn sydd ddim yn dda. 101 00:05:45,540 --> 00:05:46,030 OK. 102 00:05:46,030 --> 00:05:51,330 >> Felly, gan dybio gennym ffeil agored, yna rydym yn mynd i ysgrifennu i'r ffeil y 103 00:05:51,330 --> 00:05:53,290 512 bytes sydd gennym yn ein byffer. 104 00:05:53,290 --> 00:05:57,390 Ac rydym yn gwirio unwaith eto i wneud yn yn siwr bod y 512 bytes llwyddiannus 105 00:05:57,390 --> 00:06:01,140 eu hysgrifennu oherwydd os nad oeddent yn ysgrifenedig yn llwyddiannus, yna rhywbeth 106 00:06:01,140 --> 00:06:02,080 aeth o'i le. 107 00:06:02,080 --> 00:06:06,540 Byddwn yn cau ein ffeil, print that aeth rhywbeth o'i le, a dychwelyd. 108 00:06:06,540 --> 00:06:10,940 Gan dybio popeth yn mynd yn iawn, yna byddwn yn cadw dolennu cau'r 109 00:06:10,940 --> 00:06:15,060 hen ffeil, agor y ffeil newydd, ysgrifennu data i'r ffeil newydd, ac yn y blaen 110 00:06:15,060 --> 00:06:20,990 ar hyd yn olaf, mae hyn yn f darllen dychwelyd sero sy'n golygu 111 00:06:20,990 --> 00:06:23,280 bod y ffeil yn cael ei wneud. 112 00:06:23,280 --> 00:06:28,490 >> Felly nawr bod y darlleniad cerdyn i ben, rydym yn weld ein bod yn mynd i f cau'r 113 00:06:28,490 --> 00:06:33,250 ffeil diwethaf yr oedd gennym ar agor, ond rydym yn gwirio os ffeil JPEG 114 00:06:33,250 --> 00:06:34,900 yn null nid gyfartal. 115 00:06:34,900 --> 00:06:39,520 Wel mae'r f agos yn gwneud synnwyr oherwydd fel y rydym yn agor ffeiliau, rydym yn cau'r rhwyd 116 00:06:39,520 --> 00:06:43,870 y ffeil blaenorol, ond yr olaf un ffeil a agorodd ydym byth yn cael ei gau. 117 00:06:43,870 --> 00:06:45,580 Felly, dyna beth mae hyn yn ei wneud. 118 00:06:45,580 --> 00:06:47,720 >> Ond pam mae angen i ni edrych am null? 119 00:06:47,720 --> 00:06:53,130 Wel nid oedd beth os cerdyn dot amrwd cael JPEG un tu mewn iddo? 120 00:06:53,130 --> 00:06:56,640 Yn yr achos hwnnw, byddai gennym byth yn agor ffeil. 121 00:06:56,640 --> 00:07:00,230 Ac os ydym byth yn agor ffeil, dylem am roi cynnig i gau'r ffeil. 122 00:07:00,230 --> 00:07:03,000 Felly, dyna beth gwiriad hwn yn ei wneud. 123 00:07:03,000 --> 00:07:07,880 >> Nawr dyma, fel y dywedais o'r blaen, gallem wedi torri bod y ddolen naill ai os 124 00:07:07,880 --> 00:07:13,520 y cerdyn wedi dod i ben, neu os oes rhyw wall ddarllen o'r cerdyn. 125 00:07:13,520 --> 00:07:16,680 Felly, mae hyn yn edrych i weld a oedd gwall yn darllen oddi wrth y cerdyn, yn 126 00:07:16,680 --> 00:07:19,400 ac os felly, byddwn yn dweud bod Roedd darlleniad gwall. 127 00:07:19,400 --> 00:07:22,130 Nid ydym am i'r defnyddiwr i feddwl Aeth popeth yn llwyddiannus. 128 00:07:22,130 --> 00:07:24,750 A byddwn yn dychwelyd un ar gyfer camgymeriad. 129 00:07:24,750 --> 00:07:29,580 >> Yn olaf, byddwn yn f cau ein ffeil crai, ein cerdyn dot amrwd, i ddangos bod 130 00:07:29,580 --> 00:07:34,070 Aeth popeth yn dda a dychwelyd sero a dyna ni. 131 00:07:34,070 --> 00:07:36,130 >> Fy enw i yw Rob ac roedd hyn yn Adennill. 132 00:07:36,130 --> 00:07:42,102 >> [CHWARAE CERDDORIAETH]