1 00:00:00,000 --> 00:00:00,494 2 00:00:00,494 --> 00:00:13,350 >> [Музыка гуляе] 3 00:00:13,350 --> 00:00:14,080 >> ROB BOWDEN: Прывітанне. 4 00:00:14,080 --> 00:00:17,550 Я Роб, і будзем спадзявацца, што гэта рашэнне дапамагае паставіць вас 5 00:00:17,550 --> 00:00:19,600 на шляху да акрыяння. 6 00:00:19,600 --> 00:00:22,700 Так што давайце пачнем. 7 00:00:22,700 --> 00:00:25,660 >> Мы бачым, што адразу мы проста каб пераканацца, што мы 8 00:00:25,660 --> 00:00:27,170 з выкарыстаннем Аднаўленне правільна. 9 00:00:27,170 --> 00:00:31,490 Такім чынам, выкарыстанне павінна быць проста нешта як кропка слэш аднавіць. 10 00:00:31,490 --> 00:00:35,500 >> Цяпер мы збіраемся адкрыць чакаецца карта кропка неапрацаваны файл. 11 00:00:35,500 --> 00:00:39,740 Мы бачым тут, што мы выкарыстоўваем пастаянная імя файла сыравіну падкрэслення, 12 00:00:39,740 --> 00:00:44,200 якія тут у нас ёсць хэш вызначаецца як карта кропка ў волкім выглядзе. 13 00:00:44,200 --> 00:00:45,030 ОК. 14 00:00:45,030 --> 00:00:48,210 >> Такім чынам, мы павінны пераканацца, што гэта паспяхова адкрыты, таму што, калі ён 15 00:00:48,210 --> 00:00:51,150 ня, то мы павінны папярэдзіць карыстальніка. 16 00:00:51,150 --> 00:00:56,770 Але калі выказаць здагадку, што ён зрабіў, мы цяпер збіраецца аб'явіць буфер памерам JPEG 17 00:00:56,770 --> 00:00:58,170 даўжыні імя файла. 18 00:00:58,170 --> 00:01:02,060 Так што гэта будзе буфер, які мы збіраемся Sprintf ст. 19 00:01:02,060 --> 00:01:04,360 >> Так што ж такое JPEG файла Даўжыня імя? 20 00:01:04,360 --> 00:01:08,490 Тут, наверсе, мы бачым, што гэта хэш вызначаецца як восем. 21 00:01:08,490 --> 00:01:10,670 Дык чаму восем? 22 00:01:10,670 --> 00:01:15,150 Ну гэты файл будзе называцца нешта накшталт нулявога нулявы нуля. 23 00:01:15,150 --> 00:01:19,460 JPG, а затым мы павінны зваротны слэш нулявы. 24 00:01:19,460 --> 00:01:22,720 Таму нам патрэбен буфер, які можа захоўваць васьмі знакаў. 25 00:01:22,720 --> 00:01:25,190 Цяпер мы збіраемся ёсць лічыльнік Вось збіраецца адсочваць 26 00:01:25,190 --> 00:01:27,780 Нумар у фармаце JPEG мы знайшлі. 27 00:01:27,780 --> 00:01:31,590 >> І, нарэшце, мы збіраемся мець Выява JPEG, які першапачаткова нулявы 28 00:01:31,590 --> 00:01:35,920 якая будзе ў цяперашні час адкрыць файл, што мы пішам, каб. 29 00:01:35,920 --> 00:01:37,540 Цяпер мы збіраемся, каб мець дадатковы буфер. 30 00:01:37,540 --> 00:01:41,350 Гэта не тое ж самае, як наш Sprintf буфер, дзе гэты буфер адзін 31 00:01:41,350 --> 00:01:45,020 што мы чытаем у дадзеных з карты кропка ў волкім выглядзе. 32 00:01:45,020 --> 00:01:48,900 >> Такім чынам, буфер будзе з непадпісаныя сімвалы, якія вы можаце 33 00:01:48,900 --> 00:01:53,560 у асноўным толькі разглядаць нас байт, і гэта будзе памеру памеру блока 34 00:01:53,560 --> 00:01:57,950 дзе, як мы кажам вам, памер блока 512. 35 00:01:57,950 --> 00:02:03,070 Так у фармаце JPEG можна лячыць усё ў выглядзе блокаў па 512 байт. 36 00:02:03,070 --> 00:02:05,890 >> Цяпер мы збіраемся завесы на працягу ўсяго файла. 37 00:02:05,890 --> 00:02:12,980 Мы збіраемся е чытаць у нашай буфера а адзінкавыя разоў памер блока ад 38 00:02:12,980 --> 00:02:14,710 карта кропка неапрацаваны файл. 39 00:02:14,710 --> 00:02:16,630 Цяпер што ж е чытаць вярнуцца? 40 00:02:16,630 --> 00:02:20,050 Яна вяртае колькасць элементаў што ён паспяхова чытаў. 41 00:02:20,050 --> 00:02:27,310 Так што, калі яму ўдалося прачытаць 512 байт, то мы хочам бачыць, ці было гэта 42 00:02:27,310 --> 00:02:29,700 JPEG або напісаць гэта ў файл JPEG. 43 00:02:29,700 --> 00:02:34,450 І калі гэта не вярнуліся 512 байт, то альбо файл скончылася 44 00:02:34,450 --> 00:02:37,870 гэтым выпадку мы будзем вырвацца з у пятля, або ёсць нейкая памылка 45 00:02:37,870 --> 00:02:40,300 у гэтым выпадку мы таксама вырвацца з у пятлі, але мы будзем хочаце паведаміць 46 00:02:40,300 --> 00:02:41,990 што нешта пайшло не так. 47 00:02:41,990 --> 00:02:42,290 >> ОК. 48 00:02:42,290 --> 00:02:47,630 Так калі выказаць здагадку, што мы паспяхова чытаць ў 512 байт, мы хочам першай праверкі 49 00:02:47,630 --> 00:02:53,070 зрабіць, што гэтыя байты, што мы толькі што прачытаў у пачаць JPEG. 50 00:02:53,070 --> 00:02:56,430 Так што калі ёсць загаловак JPEG нашага буфера. 51 00:02:56,430 --> 00:02:58,460 Цяпер, што гэта такое загаловак JPEG робіш? 52 00:02:58,460 --> 00:03:00,120 Давайце паглядзім. 53 00:03:00,120 --> 00:03:05,270 >> Тут, наверсе, мы бачым, што гэтая функцыя вяртанне быка, і, што бык - 54 00:03:05,270 --> 00:03:08,820 ну вось, мы правяраем, каб пераканацца, Загаловак нуля роўная гэтую канстанту і 55 00:03:08,820 --> 00:03:11,880 загаловак адзін складае гэтую канстанту і Загаловак два складае гэтую канстанту, 56 00:03:11,880 --> 00:03:15,640 Загаловак тры роўна гэта ці гэта пастаянная, дзе ўсе гэтыя канстанты 57 00:03:15,640 --> 00:03:20,340 проста хэш вызначаецца прама тут і менавіта тое, што мы казалі, у спецыфікацыі 58 00:03:20,340 --> 00:03:22,700 што JPEG пачынаецца з. 59 00:03:22,700 --> 00:03:27,300 І таму гэтая функцыя проста будзе вярнуцца дакладна, калі гэты буфер ўяўляе 60 00:03:27,300 --> 00:03:31,750 пачатак новага JPEG і ў адваротным выпадку. 61 00:03:31,750 --> 00:03:32,520 >> ОК. 62 00:03:32,520 --> 00:03:38,490 Так што, калі гэта сапраўды ўяўляе новую JPEG, то спачатку мы хацелі, каб праверыць, калі 63 00:03:38,490 --> 00:03:42,030 Выява JPEG ня роўная нуль, у гэтым выпадку мы закрыць яго. 64 00:03:42,030 --> 00:03:44,940 І так чаму мы павінны праверыць каб убачыць, калі гэта не пусты? 65 00:03:44,940 --> 00:03:48,980 Ну самы першы JPEG, што мы знайсці мы не будзем ужо ёсць 66 00:03:48,980 --> 00:03:50,440 адкрыць файл JPEG. 67 00:03:50,440 --> 00:03:55,580 Дык вось, калі мы спрабуем зачыніць гэта, то мы не робім нешта зусім дакладна. 68 00:03:55,580 --> 00:03:59,090 >> Але кожны наступны JPEG, што мы адкрываем, мы хочам, каб закрыць 69 00:03:59,090 --> 00:04:00,710 папярэдні файл. 70 00:04:00,710 --> 00:04:04,630 Так што цяпер мы збіраемся выкарыстаць Sprintf як мы сказаў перш, дзе мы выкарыстоўваем 71 00:04:04,630 --> 00:04:06,280 Імя файла буфера JPEG. 72 00:04:06,280 --> 00:04:09,870 І мы збіраемся выкарыстаць файл JPEG назваць фармат, як наш фармат. 73 00:04:09,870 --> 00:04:12,030 І што гэта такое? 74 00:04:12,030 --> 00:04:18,450 Тут, наверсе, мы бачым, што гэта працэнтаў нуля 3D.JPEG дзе нуль тры проста 75 00:04:18,450 --> 00:04:22,089 кажа, што мы будзем выкарыстоўваць тры цэлых для гэтага запаўняюцца нулямі. 76 00:04:22,089 --> 00:04:27,470 Так што гэта, як мы атрымаем нуль нуль one.JPEG і нулявой 10.jpeg і гэтак далей. 77 00:04:27,470 --> 00:04:29,060 >> Мы збіраемся выкарыстоўваць Sprintf. 78 00:04:29,060 --> 00:04:33,760 І цэлы лік, якое мы ўстаўкі у радок здранцвенне ў фармаце JPEG 79 00:04:33,760 --> 00:04:36,380 адноўлены, які першапачаткова нуля. 80 00:04:36,380 --> 00:04:39,950 Такім чынам, першы файл, адкрыты збіраецца быць нуль нуль нуль кропка JPEG. 81 00:04:39,950 --> 00:04:43,330 А потым мы павялічваючы яго так наступны файл мы адкрываем будзе нуль-нуль 82 00:04:43,330 --> 00:04:46,830 адна кропка JPEG і мы будзем павялічваць яго зноў так што гэта будзе нуль нуль два кропка 83 00:04:46,830 --> 00:04:49,100 JPEG і гэтак далей. 84 00:04:49,100 --> 00:04:49,850 >> Добра. 85 00:04:49,850 --> 00:04:53,210 Так што цяпер ўнутры файла JPEG назваць, у нас ёсць імя 86 00:04:53,210 --> 00:04:54,990 файл, які мы хочам. 87 00:04:54,990 --> 00:04:58,640 Мы можам е адкрыць гэты файл для запісу. 88 00:04:58,640 --> 00:04:59,170 ОК. 89 00:04:59,170 --> 00:05:02,820 І яшчэ раз, мы павінны праверыць, каб зрабіць ўпэўненыя, што файл паспяхова 90 00:05:02,820 --> 00:05:08,460 адкрыў, так як калі гэта было не так, то ёсць нейкая памылка. 91 00:05:08,460 --> 00:05:13,100 >> Так што цяпер мы атрымалі ў мінулым гэта частка JPEG. 92 00:05:13,100 --> 00:05:16,390 І вось, мы бачым, што мы збіраемся для запісу ў фармаце JPEG. 93 00:05:16,390 --> 00:05:20,980 Але мы спачатку павінны гэтую праверку у якім гаворыцца, калі файл JPEG не можа ісці ў NULL. 94 00:05:20,980 --> 00:05:22,490 Навошта нам гэта? 95 00:05:22,490 --> 00:05:28,020 Ну файла JPEG роўная нуль, калі мы У цяперашні час ёсць адкрытая JPEG. 96 00:05:28,020 --> 00:05:31,870 >> Што рабіць, калі карта кропка сыравіну пачынаецца з кучай байтаў, 97 00:05:31,870 --> 00:05:33,510 не ўяўляюць JPEG? 98 00:05:33,510 --> 00:05:36,240 Тады мы збіраемся хочаце прапусціць тых байт. 99 00:05:36,240 --> 00:05:39,600 Калі мы не маем гэтую праверку, то мы збіраюся напісаць, каб у нераспечатаную пакаванні 100 00:05:39,600 --> 00:05:45,540 падаць першыя 512 байт карта што не ёсць добра. 101 00:05:45,540 --> 00:05:46,030 ОК. 102 00:05:46,030 --> 00:05:51,330 >> Так мяркуючы у нас ёсць адкрыты файл, то мы збіраемся напісаць на гэты файл 103 00:05:51,330 --> 00:05:53,290 512 байт, што мы маем у нашым буферы. 104 00:05:53,290 --> 00:05:57,390 І мы ў чарговы раз правяраючы, упэўнены, што 512 байт паспяхова 105 00:05:57,390 --> 00:06:01,140 былі напісаны, таму што калі яны не былі паспяхова запісаны, то нешта 106 00:06:01,140 --> 00:06:02,080 пайшло не так. 107 00:06:02,080 --> 00:06:06,540 Мы будзем закрываць файлы, друкаваць, што нешта пайшло не так, і вяртанне. 108 00:06:06,540 --> 00:06:10,940 Мяркуючы, што ўсё ідзе правільна, то мы будзем трымаць цыкл закрыцця 109 00:06:10,940 --> 00:06:15,060 стары файл, адкрыўшы новы файл, ліст дадзеныя ў новы файл, і таму 110 00:06:15,060 --> 00:06:20,990 , Пакуль, нарэшце, гэта е не чытаць вяртае нуль, які сродкі 111 00:06:20,990 --> 00:06:23,280 што файл робіцца. 112 00:06:23,280 --> 00:06:28,490 >> Так што цяпер чытання карт скончыцца, мы бачыць, што мы збіраемся е зачыніць 113 00:06:28,490 --> 00:06:33,250 апошні файл, які мы павінны былі адкрыты, але мы правяраем, калі файл JPEG 114 00:06:33,250 --> 00:06:34,900 ня роўны NULL. 115 00:06:34,900 --> 00:06:39,520 Ну е блізка мае сэнс, таму як мы адкрываем файлы, мы зачыняемся 116 00:06:39,520 --> 00:06:43,870 папярэдні файл, але ў самы апошні файл, які мы адкрылі ніколі не зачыняецца. 117 00:06:43,870 --> 00:06:45,580 Дык вось што гэта робіць. 118 00:06:45,580 --> 00:06:47,720 >> Але чаму мы павінны праверыць на нуль? 119 00:06:47,720 --> 00:06:53,130 Ну што рабіць, калі карта кропка сыравіна не зрабіў мець адзіную JPEG ўнутры яго? 120 00:06:53,130 --> 00:06:56,640 У гэтым выпадку мы павінны былі б ніколі не адкрыў файл. 121 00:06:56,640 --> 00:07:00,230 І калі мы ніколі не адкрыць файл, мы павінны Не спрабуйце зачыніць файл. 122 00:07:00,230 --> 00:07:03,000 Дык вось што гэтая праверка робіць. 123 00:07:03,000 --> 00:07:07,880 >> Цяпер вось, як я ўжо сказаў, мы маглі б ўспыхнулі што ў пятлю альбо калі 124 00:07:07,880 --> 00:07:13,520 карта скончылася або калі ёсць некаторыя памылкі чытання з карты. 125 00:07:13,520 --> 00:07:16,680 Так што гэта правяраць, калі было памылка чытаньня з карты, у 126 00:07:16,680 --> 00:07:19,400 гэтым выпадку, мы будзем казаць там было памылка чытання. 127 00:07:19,400 --> 00:07:22,130 Мы не хочам, карыстальнік думаць усё прайшло паспяхова. 128 00:07:22,130 --> 00:07:24,750 І мы будзем вяртаць адно на памылку. 129 00:07:24,750 --> 00:07:29,580 >> Нарэшце, мы е зачыніць наш неапрацаваны файл, наша карта кропка сыравіну, каб паказаць, што 130 00:07:29,580 --> 00:07:34,070 усё прайшло добра і вяртанне нуля і ўсё тут. 131 00:07:34,070 --> 00:07:36,130 >> Мяне клічуць Боб, і гэта было аднавіць. 132 00:07:36,130 --> 00:07:42,102 >> [Музыка гуляе]