1 00:00:00,000 --> 00:00:00,494 2 00:00:00,494 --> 00:00:13,350 >> [MUSIC PŘEHRÁVÁNÍ] 3 00:00:13,350 --> 00:00:14,080 >> ROB BOWDEN: Ahoj. 4 00:00:14,080 --> 00:00:17,550 Jsem Rob, a doufejme, že Toto řešení pomáhá vás 5 00:00:17,550 --> 00:00:19,600 na cestě k uzdravení. 6 00:00:19,600 --> 00:00:22,700 Tak pojďme začít. 7 00:00:22,700 --> 00:00:25,660 >> Vidíme, že okamžitě jsme jen aby se ujistil, že jsme 8 00:00:25,660 --> 00:00:27,170 používající Obnovit správně. 9 00:00:27,170 --> 00:00:31,490 Takže použití by mělo být jen něco, jako tečka lomítko obnovit. 10 00:00:31,490 --> 00:00:35,500 >> Nyní budeme otevření očekává karta dot raw souboru. 11 00:00:35,500 --> 00:00:39,740 Vidíme zde, že jsme pomocí konstantní název raw podtržítko souboru, 12 00:00:39,740 --> 00:00:44,200 které tady máme hash definována jako karta dot raw. 13 00:00:44,200 --> 00:00:45,030 OK. 14 00:00:45,030 --> 00:00:48,210 >> Takže se musíme ujistit, že úspěšně otevřít, protože v případě, že 15 00:00:48,210 --> 00:00:51,150 ne, pak bychom měli varovat uživatele. 16 00:00:51,150 --> 00:00:56,770 Ale za předpokladu, že to udělali, že jsme teď chystá vyhlásit vyrovnávací paměť o velikosti JPEG 17 00:00:56,770 --> 00:00:58,170 délce názvu souboru. 18 00:00:58,170 --> 00:01:02,060 Takže to bude vyrovnávací paměť, která budeme sprintf do. 19 00:01:02,060 --> 00:01:04,360 >> Takže to, co je JPEG soubor název délka? 20 00:01:04,360 --> 00:01:08,490 Až tady, vidíme, že je to hash definována jako osm. 21 00:01:08,490 --> 00:01:10,670 Tak proč osm? 22 00:01:10,670 --> 00:01:15,150 No daný soubor bude pojmenován něco jako nula nula nula. 23 00:01:15,150 --> 00:01:19,460 JPG a pak musíme zpětné lomítko nula. 24 00:01:19,460 --> 00:01:22,720 Takže potřebujeme vyrovnávací paměti, který dokáže uložit až osm znaků. 25 00:01:22,720 --> 00:01:25,190 Teď budeme mít čítač, který je bude sledovat 26 00:01:25,190 --> 00:01:27,780 Číslo JPEG jsme našli. 27 00:01:27,780 --> 00:01:31,590 >> A konečně budeme mít Soubor JPEG, který je zpočátku null 28 00:01:31,590 --> 00:01:35,920 která se bude v současné době otevřít soubor, který jsme písemně. 29 00:01:35,920 --> 00:01:37,540 Teď budeme mít další vyrovnávací paměti. 30 00:01:37,540 --> 00:01:41,350 To není totéž jako naše sprintf vyrovnávací paměť, kde této vyrovnávací paměti, je ten, 31 00:01:41,350 --> 00:01:45,020 že čtete v datech z karty dot syrové. 32 00:01:45,020 --> 00:01:48,900 >> Takže vyrovnávací paměť bude mít nepodepsané znaků, které můžete 33 00:01:48,900 --> 00:01:53,560 v podstatě jen léčit nám bytů, a to bude mít velikost velikost bloku 34 00:01:53,560 --> 00:01:57,950 kde, jak jsme vám říct, velikost bloku je 512. 35 00:01:57,950 --> 00:02:03,070 Takže JPEG můžete léčit vše jako bloky 512 bajtů. 36 00:02:03,070 --> 00:02:05,890 >> Teď jedeme do smyčky v celém souboru. 37 00:02:05,890 --> 00:02:12,980 Budeme f číst do naší paměti jediný časy byte velikost bloku z 38 00:02:12,980 --> 00:02:14,710 karta dot raw souboru. 39 00:02:14,710 --> 00:02:16,630 A teď, co se f číst vrátit? 40 00:02:16,630 --> 00:02:20,050 Vrací počet položek že úspěšně číst. 41 00:02:20,050 --> 00:02:27,310 Takže pokud se jí podařilo číst 512 bajtů, pak Chceme-li zjistit, zda se jedná o 42 00:02:27,310 --> 00:02:29,700 JPEG nebo napsat, že do souboru JPEG. 43 00:02:29,700 --> 00:02:34,450 A pokud se nevrátil 512 bajtů, pak buď soubor skončila 44 00:02:34,450 --> 00:02:37,870 takovém případě budeme vymanit se z y smyčky, nebo tam jsou nějaké chyby 45 00:02:37,870 --> 00:02:40,300 v takovém případě budeme také vymanit z y smyčka, ale budeme chtít nahlásit 46 00:02:40,300 --> 00:02:41,990 že se něco pokazilo. 47 00:02:41,990 --> 00:02:42,290 >> OK. 48 00:02:42,290 --> 00:02:47,630 Takže za předpokladu, že se nám podařilo přečíst v 512 bytech, chceme, aby první kontrole 49 00:02:47,630 --> 00:02:53,070 aby se, že tyto byty, které jsme jen číst začít JPEG. 50 00:02:53,070 --> 00:02:56,430 Takže pokud je JPEG záhlaví naší paměti. 51 00:02:56,430 --> 00:02:58,460 Teď, co to je hlavička JPEG dělá? 52 00:02:58,460 --> 00:03:00,120 Pojďme se podívat. 53 00:03:00,120 --> 00:03:05,270 >> Až tady, vidíme, že tato funkce je vrací býka, a že býk - 54 00:03:05,270 --> 00:03:08,820 i tady, budeme kontrolovat, zda záhlaví nula rovná tuto konstantu a 55 00:03:08,820 --> 00:03:11,880 header jedna rovná se tato konstanta a header dva se rovná tuto konstantu, 56 00:03:11,880 --> 00:03:15,640 header tři se rovná této nebo této konstanta, kde všechny tyto konstanty jsou 57 00:03:15,640 --> 00:03:20,340 jen hash definována tady a jsou přesně to, co jsme vám v spec 58 00:03:20,340 --> 00:03:22,700 že JPEG začíná. 59 00:03:22,700 --> 00:03:27,300 A tak tato funkce je jen tak vrátí true, pokud tento vyrovnávací paměť představuje 60 00:03:27,300 --> 00:03:31,750 Začátek nového formátu JPEG a v opačném případě false. 61 00:03:31,750 --> 00:03:32,520 >> OK. 62 00:03:32,520 --> 00:03:38,490 Takže pokud to dělá představují novou JPEG, pak jsme se poprvé chcete zkontrolovat, zda 63 00:03:38,490 --> 00:03:42,030 Soubor JPEG není rovno null, V takovém případě bychom jej zavřete. 64 00:03:42,030 --> 00:03:44,940 A tak proč musíme zkontrolovat aby zjistil, jestli to není null? 65 00:03:44,940 --> 00:03:48,980 No první JPEG, které jsme zde nebudeme už mít 66 00:03:48,980 --> 00:03:50,440 otevřít soubor JPEG. 67 00:03:50,440 --> 00:03:55,580 A tak, když se budeme snažit uzavřít, pak my neděláme něco úplně v pořádku. 68 00:03:55,580 --> 00:03:59,090 >> Ale každý následný JPEG, které jsme se otevřít, chceme uzavřít 69 00:03:59,090 --> 00:04:00,710 Předchozí obrázek. 70 00:04:00,710 --> 00:04:04,630 Takže teď budeme používat sprintf jako my řekl, kde jsme pomocí 71 00:04:04,630 --> 00:04:06,280 Název vyrovnávací JPEG souboru. 72 00:04:06,280 --> 00:04:09,870 A budeme používat soubor JPEG jméno formátu jako náš formátu. 73 00:04:09,870 --> 00:04:12,030 A to je co? 74 00:04:12,030 --> 00:04:18,450 Až tady, vidíme, že to je procent nula 3D.JPEG kde nula tři právě 75 00:04:18,450 --> 00:04:22,089 říká, že budeme používat tři celá čísla pro tento doplněno nulami. 76 00:04:22,089 --> 00:04:27,470 Takže to je to, jak budeme mít nula nula one.JPEG a nulové 10.JPEG a tak dále. 77 00:04:27,470 --> 00:04:29,060 >> Budeme používat sprintf. 78 00:04:29,060 --> 00:04:33,760 A celé číslo, které jsme vkládání na řetězec Necitlivé JPEG 79 00:04:33,760 --> 00:04:36,380 zpět, což je původně nule. 80 00:04:36,380 --> 00:04:39,950 Takže první otevření souboru se děje být nula nula nula tečka JPEG. 81 00:04:39,950 --> 00:04:43,330 A pak jsme to postupně tak, Další obrázek se otevře bude nula nula 82 00:04:43,330 --> 00:04:46,830 jedna tečka JPEG a budeme zvyšovat ji znovu tak, že to bude nula nula dva tečka 83 00:04:46,830 --> 00:04:49,100 JPEG a tak dále. 84 00:04:49,100 --> 00:04:49,850 >> Dobrá. 85 00:04:49,850 --> 00:04:53,210 Takže teď uvnitř souboru JPEG jméno, máme jméno 86 00:04:53,210 --> 00:04:54,990 soubor, který chceme. 87 00:04:54,990 --> 00:04:58,640 Můžeme f otevřít soubor pro zápis. 88 00:04:58,640 --> 00:04:59,170 OK. 89 00:04:59,170 --> 00:05:02,820 A opět, je třeba zkontrolovat, aby se Ujistěte se, že soubor úspěšně 90 00:05:02,820 --> 00:05:08,460 otevřeno, protože pokud se tak nestalo, pak tam byla nějaká chyba. 91 00:05:08,460 --> 00:05:13,100 >> Takže teď jsme se dostali kolem je tato část JPEG. 92 00:05:13,100 --> 00:05:16,390 A tady vidíme, jdeme zapisovat do JPEG. 93 00:05:16,390 --> 00:05:20,980 Ale musíme nejprve tuto kontrolu, která říká, pokud soubor JPEG není rovno null. 94 00:05:20,980 --> 00:05:22,490 Proč potřebujeme to? 95 00:05:22,490 --> 00:05:28,020 No soubor JPEG se rovná null, když jsme V současné době mají otevřenou JPEG. 96 00:05:28,020 --> 00:05:31,870 >> Co když syrové začíná karta dot s partou bajtů 97 00:05:31,870 --> 00:05:33,510 nepředstavují JPEG? 98 00:05:33,510 --> 00:05:36,240 Pak budeme chtít přeskočit těchto bytů. 99 00:05:36,240 --> 00:05:39,600 Pokud nemáme tuto kontrolu, a pak jsme bude psát na neotevřené 100 00:05:39,600 --> 00:05:45,540 soubor prvních 512 bajtů karta, která není dobrá. 101 00:05:45,540 --> 00:05:46,030 OK. 102 00:05:46,030 --> 00:05:51,330 >> Takže za předpokladu, že máme otevřený soubor, pak budeme zapisovat do tohoto souboru 103 00:05:51,330 --> 00:05:53,290 512 bajtů, které máme v naší paměti. 104 00:05:53,290 --> 00:05:57,390 A jsme opět kontrolu, aby se Ujistěte se, že je 512 bajtů úspěšně 105 00:05:57,390 --> 00:06:01,140 bylo napsáno, protože kdyby nebyly úspěšně zapsána, pak se něco 106 00:06:01,140 --> 00:06:02,080 zvrtlo. 107 00:06:02,080 --> 00:06:06,540 Budeme zavírat soubory, tisknout, které se něco pokazilo, a návrat. 108 00:06:06,540 --> 00:06:10,940 Za předpokladu, že jde všechno správně, pak budeme držet opakování zavírání 109 00:06:10,940 --> 00:06:15,060 starý soubor, otevřete nový soubor, psaní dat do nového souboru, a tak 110 00:06:15,060 --> 00:06:20,990 tak dlouho, dokud se konečně, tento f čtení vrátí nulu, která znamená 111 00:06:20,990 --> 00:06:23,280 že soubor je hotovo. 112 00:06:23,280 --> 00:06:28,490 >> Takže teď, že čtení karty je u konce, my vidět, že jdeme na f zavřít 113 00:06:28,490 --> 00:06:33,250 poslední soubor, který jsme měli otevřené, ale budeme kontrolovat, zda soubor JPEG 114 00:06:33,250 --> 00:06:34,900 není rovno null. 115 00:06:34,900 --> 00:06:39,520 No f blízkosti dává smysl, protože jako jsme otevření souborů, jsme zavření 116 00:06:39,520 --> 00:06:43,870 Předchozí obrázek, ale úplně poslední soubor, který jsme otevřeli nikdy nedostane uzavřen. 117 00:06:43,870 --> 00:06:45,580 Takže to je to, co to dělá. 118 00:06:45,580 --> 00:06:47,720 >> Ale proč musíme zkontrolovat null? 119 00:06:47,720 --> 00:06:53,130 No co když karta tečka syrové ne mají jediný JPEG uvnitř ní? 120 00:06:53,130 --> 00:06:56,640 V takovém případě bychom museli Nikdy otevřel soubor. 121 00:06:56,640 --> 00:07:00,230 A když jsme se nikdy otevřít soubor, měli bychom nesnaží se uzavřít tento soubor. 122 00:07:00,230 --> 00:07:03,000 Takže to je to, co se tato kontrola dělá. 123 00:07:03,000 --> 00:07:07,880 >> A teď, jak jsem již řekl dříve, mohli jsme byly rozděleny na to, že y smyčky, pokud jsou 124 00:07:07,880 --> 00:07:13,520 karta skončila, nebo v případě, že jsou čtení z karty nějaká chyba. 125 00:07:13,520 --> 00:07:16,680 Tak to je kontrola, zda byl čtení z karty, na chyby 126 00:07:16,680 --> 00:07:19,400 takovém případě, budeme zde říkat Byla chyba čtení. 127 00:07:19,400 --> 00:07:22,130 Nechceme, aby uživatel myslet vše proběhlo úspěšně. 128 00:07:22,130 --> 00:07:24,750 A vrátíme jednu pro chybu. 129 00:07:24,750 --> 00:07:29,580 >> Nakonec, budeme f uzavřít naši raw soubor, naše karty dot syrové, což znamená, že 130 00:07:29,580 --> 00:07:34,070 všechno šlo dobře a návrat nulu a to je vše. 131 00:07:34,070 --> 00:07:36,130 >> Jmenuji se Rob a to obnovit. 132 00:07:36,130 --> 00:07:42,102 >> [MUSIC PŘEHRÁVÁNÍ]