1 00:00:00,000 --> 00:00:00,494 2 00:00:00,494 --> 00:00:13,350 >> [Muusika mängib] 3 00:00:13,350 --> 00:00:14,080 >> ROB BOWDEN: Hi. 4 00:00:14,080 --> 00:00:17,550 Olen Rob ja loodame, et see lahendus aitab sind 5 00:00:17,550 --> 00:00:19,600 on taastumiseks. 6 00:00:19,600 --> 00:00:22,700 Niisiis alustame. 7 00:00:22,700 --> 00:00:25,660 >> Me näeme, et kohe oleme lihtsalt veendumaks, et me oleme 8 00:00:25,660 --> 00:00:27,170 kasutades taastada õigesti. 9 00:00:27,170 --> 00:00:31,490 Nii kasutamine peaks lihtsalt olema midagi nagu dot kaldkriipsuga taastuda. 10 00:00:31,490 --> 00:00:35,500 >> Nüüd me ei kavatse avada oodata kaart dot raw faili. 11 00:00:35,500 --> 00:00:39,740 Me näeme siin, et me kasutame pidev toores alakriips faili nimi 12 00:00:39,740 --> 00:00:44,200 mis siin üleval on meil hash defineeritud kaart dot toores. 13 00:00:44,200 --> 00:00:45,030 OK. 14 00:00:45,030 --> 00:00:48,210 >> Seega peame tagama, et see edukalt avanud, sest kui see 15 00:00:48,210 --> 00:00:51,150 ei, siis me peaks hoiatama kasutaja. 16 00:00:51,150 --> 00:00:56,770 Kuid kui eeldada, et ta seda tegi, me oleme nüüd kavatse kuulutada puhvri suurus JPEG 17 00:00:56,770 --> 00:00:58,170 failinimi pikkus. 18 00:00:58,170 --> 00:01:02,060 Nii et see saab olema puhver, mis me sprintf arvesse. 19 00:01:02,060 --> 00:01:04,360 >> Mis on JPEG faili nimi pikkus? 20 00:01:04,360 --> 00:01:08,490 Siin me näeme, et see on hash määratletakse kaheksa. 21 00:01:08,490 --> 00:01:10,670 Miks kaheksa? 22 00:01:10,670 --> 00:01:15,150 Noh antud faili nimeks saab midagi nagu null null null. 23 00:01:15,150 --> 00:01:19,460 JPG ja siis peame längkriipsu null. 24 00:01:19,460 --> 00:01:22,720 Seega peame puhver, mis võivad salvestada kaheksa märki. 25 00:01:22,720 --> 00:01:25,190 Nüüd lähed on counter, mis on kavatse jälgida 26 00:01:25,190 --> 00:01:27,780 number JPEG leidsime. 27 00:01:27,780 --> 00:01:31,590 >> Ja lõpuks, me ei kavatse olla JPEG-fail, mis on esialgu null 28 00:01:31,590 --> 00:01:35,920 mis saab olema praegu avatud faili, et me kirjutame. 29 00:01:35,920 --> 00:01:37,540 Nüüd lähed on täiendavat puhvrit. 30 00:01:37,540 --> 00:01:41,350 See ei ole sama kui meie sprintf puhverdada, kui see on puhver ühe 31 00:01:41,350 --> 00:01:45,020 et me loed andmed Kaardilt dot toores. 32 00:01:45,020 --> 00:01:48,900 >> Nii puhvrit saab olema allkirjastamata tähemärki, mida saab 33 00:01:48,900 --> 00:01:53,560 põhimõtteliselt ainult kohtlevad meid baiti, ja see on saab olema suurus ploki suurus 34 00:01:53,560 --> 00:01:57,950 kus, nagu me ütleme teile, ploki suurus on 512. 35 00:01:57,950 --> 00:02:03,070 Nii JPEG saab ravida kõik kui klotsid 512 baiti. 36 00:02:03,070 --> 00:02:05,890 >> Nüüd me loop kogu faili. 37 00:02:05,890 --> 00:02:12,980 Me f lugeda meie puhver ühe baidi blokisuurus korda 38 00:02:12,980 --> 00:02:14,710 kaart dot raw faili. 39 00:02:14,710 --> 00:02:16,630 Nüüd, mida ei f lugeda tagasi? 40 00:02:16,630 --> 00:02:20,050 See tagastab arvu punkte et see edukalt lugeda. 41 00:02:20,050 --> 00:02:27,310 Nii et kui ta suutis lugeda 512 baiti, siis Me tahame näha, kas see oli 42 00:02:27,310 --> 00:02:29,700 JPEG või kirjutada seda JPEG faili. 43 00:02:29,700 --> 00:02:34,450 Ja kui ta ei tagastanud 512 baiti siis kas fail on lõppenud 44 00:02:34,450 --> 00:02:37,870 mille puhul me välja murda y loop, või on mingi viga 45 00:02:37,870 --> 00:02:40,300 mille puhul me ka välja murda y silmus, kuid me tahame aru 46 00:02:40,300 --> 00:02:41,990 et midagi läks valesti. 47 00:02:41,990 --> 00:02:42,290 >> OK. 48 00:02:42,290 --> 00:02:47,630 Seega eeldades, et me edukalt lugeda aastal 512 baiti, tahame kõigepealt check 49 00:02:47,630 --> 00:02:53,070 teha, et need baidid, et me lihtsalt lugeda alustada JPEG. 50 00:02:53,070 --> 00:02:56,430 Nii et kui on JPEG päises meie puhver. 51 00:02:56,430 --> 00:02:58,460 Nüüd sellest, mis on JPEG header teed? 52 00:02:58,460 --> 00:03:00,120 Vaatame. 53 00:03:00,120 --> 00:03:05,270 >> Siin me näeme, et see funktsioon on tagastamise pulli ja härja - 54 00:03:05,270 --> 00:03:08,820 ka siin, me kontrollime, kas header null võrdub see pidev ja 55 00:03:08,820 --> 00:03:11,880 header üks võrdub see pidev ja header kaks võrdub see pidev, 56 00:03:11,880 --> 00:03:15,640 header kolm võrdub see või see pidev kus kõik need konstandid on 57 00:03:15,640 --> 00:03:20,340 lihtsalt hash defineeritud siin ja on täpselt, mida me teile rääkinud spec 58 00:03:20,340 --> 00:03:22,700 et JPEG algab. 59 00:03:22,700 --> 00:03:27,300 Ja nii see funktsioon on ainult kavatse tagasi true kui puhver on 60 00:03:27,300 --> 00:03:31,750 algab uus JPEG ja vale teisiti. 61 00:03:31,750 --> 00:03:32,520 >> OK. 62 00:03:32,520 --> 00:03:38,490 Niisiis, kui see on uus JPEG, siis kõigepealt on ju vaadata, kui 63 00:03:38,490 --> 00:03:42,030 JPEG-faili ei ole võrdne null, mille puhul me sulgeda. 64 00:03:42,030 --> 00:03:44,940 Ja miks me vajame, et kontrollida et näha, kas see ei ole null? 65 00:03:44,940 --> 00:03:48,980 Noh kõige esimene JPEG et me leia me veel ei ole 66 00:03:48,980 --> 00:03:50,440 avatud JPEG faili. 67 00:03:50,440 --> 00:03:55,580 Ja nii, kui me püüame sulgeda, et siis me ei tee midagi päris õige. 68 00:03:55,580 --> 00:03:59,090 >> Kuid iga järgnev JPEG et avame me tahame sulgeda 69 00:03:59,090 --> 00:04:00,710 Eelmise faili. 70 00:04:00,710 --> 00:04:04,630 Nüüd me ei kavatse kasutada sprintf kui me ütles enne, kui me kasutame 71 00:04:04,630 --> 00:04:06,280 puhver JPEG faili nimi. 72 00:04:06,280 --> 00:04:09,870 Ja me ei kavatse kasutada JPEG fail nimekuju meie formaat. 73 00:04:09,870 --> 00:04:12,030 Ja mis see on? 74 00:04:12,030 --> 00:04:18,450 Siin me näeme, et see on protsent null 3D.JPEG kui null kolm lihtsalt 75 00:04:18,450 --> 00:04:22,089 ütleb, et me kasutame kolm täisarvu Selle polsterdatud nullidega. 76 00:04:22,089 --> 00:04:27,470 Nii et see on see, kuidas me saame null null one.JPEG ja null 10.JPEG ja nii edasi. 77 00:04:27,470 --> 00:04:29,060 >> Me ei kavatse kasutada sprintf. 78 00:04:29,060 --> 00:04:33,760 Ja täisarv, et me lisades arvesse string on tuim JPEG 79 00:04:33,760 --> 00:04:36,380 taaskasutatakse, mis on algselt null. 80 00:04:36,380 --> 00:04:39,950 Nii esimese faili avada saab null null null dot JPEG. 81 00:04:39,950 --> 00:04:43,330 Ja siis me incrementing see nii järgmist pilti avame null null 82 00:04:43,330 --> 00:04:46,830 üks dot JPEG ja me juurdekasvu see jälle nii, et see saab olema null null kaks dot 83 00:04:46,830 --> 00:04:49,100 JPEG ja nii edasi. 84 00:04:49,100 --> 00:04:49,850 >> Hea küll. 85 00:04:49,850 --> 00:04:53,210 Nüüd sees JPEG fail Nime, meil on nimi 86 00:04:53,210 --> 00:04:54,990 fail, mida me tahame. 87 00:04:54,990 --> 00:04:58,640 Saame f avada seda faili kirjutamiseks. 88 00:04:58,640 --> 00:04:59,170 OK. 89 00:04:59,170 --> 00:05:02,820 Ja veelkord, peame kontrollima, et Veenduge, et fail on edukalt 90 00:05:02,820 --> 00:05:08,460 avatud, sest kui see ei ole, siis seal oli viga. 91 00:05:08,460 --> 00:05:13,100 >> Nüüd oleme saanud varem see JPEG osa. 92 00:05:13,100 --> 00:05:16,390 Ja siin näeme me kirjutada JPEG. 93 00:05:16,390 --> 00:05:20,980 Aga kõigepealt on see kontroll, mis ütleb, kui JPEG fail ei võrdu null. 94 00:05:20,980 --> 00:05:22,490 Miks meil seda vaja on? 95 00:05:22,490 --> 00:05:28,020 Noh JPEG faili võrdub null, kui me Praegu on avatud JPEG. 96 00:05:28,020 --> 00:05:31,870 >> Mis siis, kui kaart dot toores algab kamp bytes et 97 00:05:31,870 --> 00:05:33,510 ei kujuta JPEG? 98 00:05:33,510 --> 00:05:36,240 Siis me tahame Otse üle need baiti. 99 00:05:36,240 --> 00:05:39,600 Kui me ei ole seda vaadata, siis oleme kavatse kirjutada avamata 100 00:05:39,600 --> 00:05:45,540 esitama esimese 512 baiti kaart, mis ei ole hea. 101 00:05:45,540 --> 00:05:46,030 OK. 102 00:05:46,030 --> 00:05:51,330 >> Seega eeldades, et meil on avatud fail, siis me kirjutada, et fail 103 00:05:51,330 --> 00:05:53,290 512 bytes, et meil on meie puhver. 104 00:05:53,290 --> 00:05:57,390 Ja me taas kontroll teha kindel, et 512 baiti edukalt 105 00:05:57,390 --> 00:06:01,140 kanti sest kui nad ei olnud edukalt kirjutatud, siis midagi 106 00:06:01,140 --> 00:06:02,080 valesti läks. 107 00:06:02,080 --> 00:06:06,540 Me sulgeme oma faile printida, et midagi läks valesti, ja tagasi. 108 00:06:06,540 --> 00:06:10,940 Eeldades, et kõik läheb õigesti, siis hoiame silmukoiminen sulgemist 109 00:06:10,940 --> 00:06:15,060 vana faili, avades uue faili, kirjalikult andmed uue faili, jne 110 00:06:15,060 --> 00:06:20,990 edasi, kuni lõpuks see f lugeda tagastab null mille abil 111 00:06:20,990 --> 00:06:23,280 et fail on tehtud. 112 00:06:23,280 --> 00:06:28,490 >> Nüüd, et kaardi lugemine on lõppenud, me näha, et me ei kavatse f sulgeda 113 00:06:28,490 --> 00:06:33,250 viimane fail, mis meil oli avatud, kuid me kontrollime kui JPEG fail 114 00:06:33,250 --> 00:06:34,900 ei võrdu null. 115 00:06:34,900 --> 00:06:39,520 Noh f lähedal loogiline, sest kui me avame faili, me sulgeme 116 00:06:39,520 --> 00:06:43,870 Eelmise faili, kuid viimasel file et avasime kunagi saab sulgeda. 117 00:06:43,870 --> 00:06:45,580 Nii see on, mida see teeb. 118 00:06:45,580 --> 00:06:47,720 >> Aga miks meil on vaja kontrollida null? 119 00:06:47,720 --> 00:06:53,130 Noh mis siis, kui kaart dot toores ei on ühtse JPEG sees on? 120 00:06:53,130 --> 00:06:56,640 Sellisel juhul oleks meil kunagi avanud faili. 121 00:06:56,640 --> 00:07:00,230 Ja kui me ei ava faili, peaksime üritage sulgeda see fail. 122 00:07:00,230 --> 00:07:03,000 Nii see on, mida see kontroll teeb. 123 00:07:03,000 --> 00:07:07,880 >> Nüüd, nagu ma enne ütlesin, me võiksime on puhkenud, et y silmus kas kui 124 00:07:07,880 --> 00:07:13,520 kaart on lõppenud või kui on mõni viga lugemine kaardiga. 125 00:07:13,520 --> 00:07:16,680 Nii et see on kontroll, et näha, kas seal oli viga lugemine kaardi sisse 126 00:07:16,680 --> 00:07:19,400 mis juhul me ütleme, et Tekkis viga lugemisel. 127 00:07:19,400 --> 00:07:22,130 Me ei soovi, et kasutaja mõtlema kõik läks edukalt. 128 00:07:22,130 --> 00:07:24,750 Ja me tagasi üks viga. 129 00:07:24,750 --> 00:07:29,580 >> Lõpuks me f sulgeda raw faili Meie kaardi dot toores, mis näitab, et 130 00:07:29,580 --> 00:07:34,070 kõik läks hästi ja tagastamine null ja see on kõik. 131 00:07:34,070 --> 00:07:36,130 >> Minu nimi on Rob ja see oli taastada. 132 00:07:36,130 --> 00:07:42,102 >> [Muusika mängib]