1 00:00:00,000 --> 00:00:00,494 2 00:00:00,494 --> 00:00:13,350 >> [Glazba svira] 3 00:00:13,350 --> 00:00:14,080 >> ROB Bowden: Bok. 4 00:00:14,080 --> 00:00:17,550 Ja sam Rob, a nadajmo se da je ovo rješenje pomaže staviti vas 5 00:00:17,550 --> 00:00:19,600 na putu prema oporavku. 6 00:00:19,600 --> 00:00:22,700 Pa počnimo. 7 00:00:22,700 --> 00:00:25,660 >> Vidimo da se odmah smo samo da bi bili sigurni da smo 8 00:00:25,660 --> 00:00:27,170 pravilno koristite oporaviti. 9 00:00:27,170 --> 00:00:31,490 Dakle uporabe treba samo biti nešto Poput točke slash oporaviti. 10 00:00:31,490 --> 00:00:35,500 >> Sada ćemo otvoriti Očekuje Kartica dot RAW datoteke. 11 00:00:35,500 --> 00:00:39,740 Ovdje vidimo da smo pomoću konstantna sirovo donja ime datoteke, 12 00:00:39,740 --> 00:00:44,200 koji ovdje imamo mljeveno meso definira kao kartice dot sirovo. 13 00:00:44,200 --> 00:00:45,030 OK. 14 00:00:45,030 --> 00:00:48,210 >> Zato nam je potrebno kako bi bili sigurni da je ta Uspješno otvoriti jer ako 15 00:00:48,210 --> 00:00:51,150 nije, onda bismo trebali upozoriti korisnika. 16 00:00:51,150 --> 00:00:56,770 No, pod pretpostavkom da je to učinio, da smo sada će proglasiti tampon od veličine JPEG 17 00:00:56,770 --> 00:00:58,170 podnijeti dužinu ime. 18 00:00:58,170 --> 00:01:02,060 Dakle, ovo će biti tampon da idemo sprintf u. 19 00:01:02,060 --> 00:01:04,360 >> Dakle, ono što je JPEG datoteka duljinom ime? 20 00:01:04,360 --> 00:01:08,490 Ovdje gore, vidimo da je hash definira kao osam. 21 00:01:08,490 --> 00:01:10,670 Pa zašto osam? 22 00:01:10,670 --> 00:01:15,150 Pa s obzirom datoteka će biti imenovan nešto kao nula nula nula. 23 00:01:15,150 --> 00:01:19,460 JPG i onda trebamo kosu crtu nula. 24 00:01:19,460 --> 00:01:22,720 Dakle, trebamo tampon koji može pohraniti osam znakova. 25 00:01:22,720 --> 00:01:25,190 Sada ćemo imati brojač koji je će pratiti 26 00:01:25,190 --> 00:01:27,780 broj JPEG smo pronašli. 27 00:01:27,780 --> 00:01:31,590 >> I na kraju, da ćemo imati JPEG datoteku koja je u početku null 28 00:01:31,590 --> 00:01:35,920 koji će biti trenutno otvoriti datoteku da pišemo na. 29 00:01:35,920 --> 00:01:37,540 Sada ćemo imati dodatni tampon. 30 00:01:37,540 --> 00:01:41,350 To nije isto kao naše sprintf gdje je taj pufer je pufer jedan 31 00:01:41,350 --> 00:01:45,020 da smo čitajući u podacima od kartica dot sirovo. 32 00:01:45,020 --> 00:01:48,900 >> Dakle tampon će biti od nepotpisani znakova, koji se može samo 33 00:01:48,900 --> 00:01:53,560 osnovi samo nas tretiraju bajtova, i to je će biti veličinu bloka 34 00:01:53,560 --> 00:01:57,950 gdje je, kao što smo vam reći, blok veličine je 512. 35 00:01:57,950 --> 00:02:03,070 Dakle JPEG možete liječiti sve kao blokove 512 bajtova. 36 00:02:03,070 --> 00:02:05,890 >> Sada idemo u petlji preko cijele datoteke. 37 00:02:05,890 --> 00:02:12,980 Idemo u f pročitati u našoj tampon jednostruki puta bajta veličina bloka iz 38 00:02:12,980 --> 00:02:14,710 kartica dot RAW datoteke. 39 00:02:14,710 --> 00:02:16,630 Sada što se f pročitao vratiti? 40 00:02:16,630 --> 00:02:20,050 Ona vraća broj predmeta da je uspješno čitanje. 41 00:02:20,050 --> 00:02:27,310 Dakle, ako je uspio pročitati 512 bajtova, a zatim želimo vidjeti je li to bio 42 00:02:27,310 --> 00:02:29,700 JPEG ili pisati u JPEG datoteku. 43 00:02:29,700 --> 00:02:34,450 A ako se ne vrati 512 bajtova, onda ni sliku je završila u 44 00:02:34,450 --> 00:02:37,870 kojem slučaju ćemo izaći iz y petlje, ili postoji nekakva pogreška 45 00:02:37,870 --> 00:02:40,300 u kojem slučaju ćemo također izaći iz y petlje, ali mi ćemo želite prijaviti 46 00:02:40,300 --> 00:02:41,990 da je nešto pošlo po zlu. 47 00:02:41,990 --> 00:02:42,290 >> OK. 48 00:02:42,290 --> 00:02:47,630 Dakle, pod pretpostavkom da smo uspješno pročitati u 512 bajtova, želimo prvo provjeri 49 00:02:47,630 --> 00:02:53,070 da bi se to ove bajtova koje smo samo čitati u početak JPEG. 50 00:02:53,070 --> 00:02:56,430 Dakle, ako je JPEG zaglavlje našeg tampon. 51 00:02:56,430 --> 00:02:58,460 Sada što ga je JPEG header radi? 52 00:02:58,460 --> 00:03:00,120 Pogledajmo. 53 00:03:00,120 --> 00:03:05,270 >> Ovdje gore, vidimo da je ova funkcija povratka bika, a to bull - 54 00:03:05,270 --> 00:03:08,820 dobro ovdje, mi smo provjeru je li header nula jednako ovu konstantu i 55 00:03:08,820 --> 00:03:11,880 header jedan jednako ovu konstantu i header dva jednaka vektora, 56 00:03:11,880 --> 00:03:15,640 header tri jednaka ovo ili ovo konstantna, gdje su sve te konstante su 57 00:03:15,640 --> 00:03:20,340 Samo hash definirana ovdje i upravo ono što smo vam rekli u spec. 58 00:03:20,340 --> 00:03:22,700 da JPEG počinje. 59 00:03:22,700 --> 00:03:27,300 I tako je ova funkcija samo ide na return true ako je to tampon predstavlja 60 00:03:27,300 --> 00:03:31,750 početak novog JPEG i lažno inače. 61 00:03:31,750 --> 00:03:32,520 >> OK. 62 00:03:32,520 --> 00:03:38,490 Dakle, ako se to ne predstavljaju novu JPEG, onda smo prvo želi provjeriti je li 63 00:03:38,490 --> 00:03:42,030 JPEG datoteka nije jednak nuli, U tom slučaju smo ga zatvoriti. 64 00:03:42,030 --> 00:03:44,940 I tako zašto trebamo provjeriti vidjeti ako to nije null? 65 00:03:44,940 --> 00:03:48,980 Pa prvi JPEG da smo pronaći nećemo već 66 00:03:48,980 --> 00:03:50,440 JPEG datoteka otvorena. 67 00:03:50,440 --> 00:03:55,580 I tako, ako ćemo pokušati zatvoriti, onda Ne radimo nešto sasvim u pravu. 68 00:03:55,580 --> 00:03:59,090 >> No, svaka sljedeća JPEG da možemo otvoriti, želimo zatvoriti 69 00:03:59,090 --> 00:04:00,710 prethodnu sliku. 70 00:04:00,710 --> 00:04:04,630 Pa sad idemo koristiti sprintf kao i mi rekao prije, gdje smo pomoću 71 00:04:04,630 --> 00:04:06,280 tampon JPEG naziv datoteke. 72 00:04:06,280 --> 00:04:09,870 I mi ćemo koristiti JPEG datoteku oblik imena kao naš formatu. 73 00:04:09,870 --> 00:04:12,030 A što je to? 74 00:04:12,030 --> 00:04:18,450 Ovdje gore, vidimo da je nula posto 3D.JPEG gdje nula tri samo 75 00:04:18,450 --> 00:04:22,089 kaže da ćemo koristiti tri prirodna broja za to podstavljene s nulama. 76 00:04:22,089 --> 00:04:27,470 Pa to je, kako ćemo dobiti nula nula one.JPEG i nula 10.JPEG i tako dalje. 77 00:04:27,470 --> 00:04:29,060 >> Mi ćemo koristiti sprintf. 78 00:04:29,060 --> 00:04:33,760 I cijeli taj smo umetanja u niz je zanijemio JPEG 79 00:04:33,760 --> 00:04:36,380 oporavio, što je izvorno nule. 80 00:04:36,380 --> 00:04:39,950 Tako je prvi file otvoren je idući biti nula nula nula dot JPEG. 81 00:04:39,950 --> 00:04:43,330 I onda smo ga povećavati, tako slijedeću sliku otvorimo će biti nula nula 82 00:04:43,330 --> 00:04:46,830 jedna točka JPEG i mi ćemo to povećavati opet, tako da će biti nula nula dvije točke 83 00:04:46,830 --> 00:04:49,100 JPEG i tako dalje. 84 00:04:49,100 --> 00:04:49,850 >> U redu. 85 00:04:49,850 --> 00:04:53,210 Tako sada unutar JPEG datoteke ime, imamo ime 86 00:04:53,210 --> 00:04:54,990 podnijeti da želimo. 87 00:04:54,990 --> 00:04:58,640 Možemo f otvoriti tu datoteku za pisanje. 88 00:04:58,640 --> 00:04:59,170 OK. 89 00:04:59,170 --> 00:05:02,820 I još jednom, moramo provjeriti kako bi sigurni da je datoteka uspješno 90 00:05:02,820 --> 00:05:08,460 otvorila jer ako to nije, onda postojala je neka pogreška. 91 00:05:08,460 --> 00:05:13,100 >> Dakle, sada smo stečen prošlosti je ovo JPEG dio. 92 00:05:13,100 --> 00:05:16,390 A evo, vidimo idemo pisati na JPEG. 93 00:05:16,390 --> 00:05:20,980 No, prvo moramo ovaj ček na kojem piše ako je JPEG datoteka ne jednak null. 94 00:05:20,980 --> 00:05:22,490 Zašto nam je potrebna da? 95 00:05:22,490 --> 00:05:28,020 Pa JPEG datoteka jednaka null kada smo Trenutno imamo otvorenu JPEG. 96 00:05:28,020 --> 00:05:31,870 >> Što ako kartica dot sirovo počinje s gomilom bajtova koji 97 00:05:31,870 --> 00:05:33,510 ne predstavljaju JPEG? 98 00:05:33,510 --> 00:05:36,240 Onda idemo u žele preskočiti tih bajtova. 99 00:05:36,240 --> 00:05:39,600 Ako nemamo taj ček, a zatim smo će pisati neotvoreni 100 00:05:39,600 --> 00:05:45,540 podnijeti prvih 512 bajtova kartica što nije dobro. 101 00:05:45,540 --> 00:05:46,030 OK. 102 00:05:46,030 --> 00:05:51,330 >> Dakle, pod pretpostavkom da imamo otvorenu datoteku, a zatim ćemo pisati na tu datoteku 103 00:05:51,330 --> 00:05:53,290 512 bajtova koje imamo u našoj tampon. 104 00:05:53,290 --> 00:05:57,390 I mi smo još jednom provjere da sigurni da su 512 uspješno bajtova 105 00:05:57,390 --> 00:06:01,140 su pisani jer ako oni nisu bili Uspješno napisano, onda se nešto 106 00:06:01,140 --> 00:06:02,080 je pošlo po zlu. 107 00:06:02,080 --> 00:06:06,540 Mi ćemo zatvoriti datoteke, ispisati da nešto je pošlo po zlu, a povratak. 108 00:06:06,540 --> 00:06:10,940 Pod pretpostavkom da sve ide točno, onda ćemo zadržati petlje zatvaranja 109 00:06:10,940 --> 00:06:15,060 stara file, otvara novu datoteku, pisanje podatke u novu datoteku, i tako 110 00:06:15,060 --> 00:06:20,990 sve dok konačno, to f pročitati vraća nula što znači 111 00:06:20,990 --> 00:06:23,280 da je datoteka. 112 00:06:23,280 --> 00:06:28,490 >> Tako da sada čitanje kartice je više, mi vidim da idemo u f zatvoriti 113 00:06:28,490 --> 00:06:33,250 zadnja datoteka koje smo imali otvorene, ali Provjeravamo ako JPEG datoteka 114 00:06:33,250 --> 00:06:34,900 nije jednak null. 115 00:06:34,900 --> 00:06:39,520 Pa f blizu smisla, jer, kao mi smo otvaranje datoteke, mi smo zatvaranja 116 00:06:39,520 --> 00:06:43,870 prethodnu sliku, ali posljednja datoteke koju smo otvorili nikad ne zatvori. 117 00:06:43,870 --> 00:06:45,580 Dakle, to je ono što ovaj radi. 118 00:06:45,580 --> 00:06:47,720 >> Ali zašto moramo provjeriti nulu? 119 00:06:47,720 --> 00:06:53,130 Pa što ako kartica dot sirovo nije imati jednu JPEG unutar nje? 120 00:06:53,130 --> 00:06:56,640 U tom slučaju, imali bismo Nikada otvorio datoteku. 121 00:06:56,640 --> 00:07:00,230 A ako mi nikada otvoriti datoteku, trebali bismo Ne pokušati zatvoriti tu datoteku. 122 00:07:00,230 --> 00:07:03,000 Dakle, to je ono što ova provjera radi. 123 00:07:03,000 --> 00:07:07,880 >> Sada je ovdje, kao što sam rekao prije, što smo mogli Slomio se da je y petlje ni kad 124 00:07:07,880 --> 00:07:13,520 Kartica je završila ili ako postoje neka pogreška čitanja od kartice. 125 00:07:13,520 --> 00:07:16,680 Dakle, ovo je provjera da li postoji Pogreška čitanja sa kartice, u 126 00:07:16,680 --> 00:07:19,400 tom slučaju, mi ćemo reći da bio čitanje pogrešaka. 127 00:07:19,400 --> 00:07:22,130 Ne želimo korisnik razmišljati sve uspješno otišao. 128 00:07:22,130 --> 00:07:24,750 A mi ćemo se vratiti jedan za pogreške. 129 00:07:24,750 --> 00:07:29,580 >> Konačno, mi ćemo f zatvoriti našu RAW datoteke, naša kartica dot sirovo, da ukazuju na to da 130 00:07:29,580 --> 00:07:34,070 sve je dobro prošlo i povratak nulu i to je to. 131 00:07:34,070 --> 00:07:36,130 >> Moje ime je Rob, a to je oporavak. 132 00:07:36,130 --> 00:07:42,102 >> [Glazba svira]