[Музыка гуляе] ROB BOWDEN: Прывітанне. Я Роб, і будзем спадзявацца, што гэта рашэнне дапамагае паставіць вас на шляху да акрыяння. Так што давайце пачнем. Мы бачым, што адразу мы проста каб пераканацца, што мы з выкарыстаннем Аднаўленне правільна. Такім чынам, выкарыстанне павінна быць проста нешта як кропка слэш аднавіць. Цяпер мы збіраемся адкрыць чакаецца карта кропка неапрацаваны файл. Мы бачым тут, што мы выкарыстоўваем пастаянная імя файла сыравіну падкрэслення, якія тут у нас ёсць хэш вызначаецца як карта кропка ў волкім выглядзе. ОК. Такім чынам, мы павінны пераканацца, што гэта паспяхова адкрыты, таму што, калі ён ня, то мы павінны папярэдзіць карыстальніка. Але калі выказаць здагадку, што ён зрабіў, мы цяпер збіраецца аб'явіць буфер памерам JPEG даўжыні імя файла. Так што гэта будзе буфер, які мы збіраемся Sprintf ст. Так што ж такое JPEG файла Даўжыня імя? Тут, наверсе, мы бачым, што гэта хэш вызначаецца як восем. Дык чаму восем? Ну гэты файл будзе называцца нешта накшталт нулявога нулявы нуля. JPG, а затым мы павінны зваротны слэш нулявы. Таму нам патрэбен буфер, які можа захоўваць васьмі знакаў. Цяпер мы збіраемся ёсць лічыльнік Вось збіраецца адсочваць Нумар у фармаце JPEG мы знайшлі. І, нарэшце, мы збіраемся мець Выява JPEG, які першапачаткова нулявы якая будзе ў цяперашні час адкрыць файл, што мы пішам, каб. Цяпер мы збіраемся, каб мець дадатковы буфер. Гэта не тое ж самае, як наш Sprintf буфер, дзе гэты буфер адзін што мы чытаем у дадзеных з карты кропка ў волкім выглядзе. Такім чынам, буфер будзе з непадпісаныя сімвалы, якія вы можаце у асноўным толькі разглядаць нас байт, і гэта будзе памеру памеру блока дзе, як мы кажам вам, памер блока 512. Так у фармаце JPEG можна лячыць усё ў выглядзе блокаў па 512 байт. Цяпер мы збіраемся завесы на працягу ўсяго файла. Мы збіраемся е чытаць у нашай буфера а адзінкавыя разоў памер блока ад карта кропка неапрацаваны файл. Цяпер што ж е чытаць вярнуцца? Яна вяртае колькасць элементаў што ён паспяхова чытаў. Так што, калі яму ўдалося прачытаць 512 байт, то мы хочам бачыць, ці было гэта JPEG або напісаць гэта ў файл JPEG. І калі гэта не вярнуліся 512 байт, то альбо файл скончылася гэтым выпадку мы будзем вырвацца з у пятля, або ёсць нейкая памылка у гэтым выпадку мы таксама вырвацца з у пятлі, але мы будзем хочаце паведаміць што нешта пайшло не так. ОК. Так калі выказаць здагадку, што мы паспяхова чытаць ў 512 байт, мы хочам першай праверкі зрабіць, што гэтыя байты, што мы толькі што прачытаў у пачаць JPEG. Так што калі ёсць загаловак JPEG нашага буфера. Цяпер, што гэта такое загаловак JPEG робіш? Давайце паглядзім. Тут, наверсе, мы бачым, што гэтая функцыя вяртанне быка, і, што бык - ну вось, мы правяраем, каб пераканацца, Загаловак нуля роўная гэтую канстанту і загаловак адзін складае гэтую канстанту і Загаловак два складае гэтую канстанту, Загаловак тры роўна гэта ці гэта пастаянная, дзе ўсе гэтыя канстанты проста хэш вызначаецца прама тут і менавіта тое, што мы казалі, у спецыфікацыі што JPEG пачынаецца з. І таму гэтая функцыя проста будзе вярнуцца дакладна, калі гэты буфер ўяўляе пачатак новага JPEG і ў адваротным выпадку. ОК. Так што, калі гэта сапраўды ўяўляе новую JPEG, то спачатку мы хацелі, каб праверыць, калі Выява JPEG ня роўная нуль, у гэтым выпадку мы закрыць яго. І так чаму мы павінны праверыць каб убачыць, калі гэта не пусты? Ну самы першы JPEG, што мы знайсці мы не будзем ужо ёсць адкрыць файл JPEG. Дык вось, калі мы спрабуем зачыніць гэта, то мы не робім нешта зусім дакладна. Але кожны наступны JPEG, што мы адкрываем, мы хочам, каб закрыць папярэдні файл. Так што цяпер мы збіраемся выкарыстаць Sprintf як мы сказаў перш, дзе мы выкарыстоўваем Імя файла буфера JPEG. І мы збіраемся выкарыстаць файл JPEG назваць фармат, як наш фармат. І што гэта такое? Тут, наверсе, мы бачым, што гэта працэнтаў нуля 3D.JPEG дзе нуль тры проста кажа, што мы будзем выкарыстоўваць тры цэлых для гэтага запаўняюцца нулямі. Так што гэта, як мы атрымаем нуль нуль one.JPEG і нулявой 10.jpeg і гэтак далей. Мы збіраемся выкарыстоўваць Sprintf. І цэлы лік, якое мы ўстаўкі у радок здранцвенне ў фармаце JPEG адноўлены, які першапачаткова нуля. Такім чынам, першы файл, адкрыты збіраецца быць нуль нуль нуль кропка JPEG. А потым мы павялічваючы яго так наступны файл мы адкрываем будзе нуль-нуль адна кропка JPEG і мы будзем павялічваць яго зноў так што гэта будзе нуль нуль два кропка JPEG і гэтак далей. Добра. Так што цяпер ўнутры файла JPEG назваць, у нас ёсць імя файл, які мы хочам. Мы можам е адкрыць гэты файл для запісу. ОК. І яшчэ раз, мы павінны праверыць, каб зрабіць ўпэўненыя, што файл паспяхова адкрыў, так як калі гэта было не так, то ёсць нейкая памылка. Так што цяпер мы атрымалі ў мінулым гэта частка JPEG. І вось, мы бачым, што мы збіраемся для запісу ў фармаце JPEG. Але мы спачатку павінны гэтую праверку у якім гаворыцца, калі файл JPEG не можа ісці ў NULL. Навошта нам гэта? Ну файла JPEG роўная нуль, калі мы У цяперашні час ёсць адкрытая JPEG. Што рабіць, калі карта кропка сыравіну пачынаецца з кучай байтаў, не ўяўляюць JPEG? Тады мы збіраемся хочаце прапусціць тых байт. Калі мы не маем гэтую праверку, то мы збіраюся напісаць, каб у нераспечатаную пакаванні падаць першыя 512 байт карта што не ёсць добра. ОК. Так мяркуючы у нас ёсць адкрыты файл, то мы збіраемся напісаць на гэты файл 512 байт, што мы маем у нашым буферы. І мы ў чарговы раз правяраючы, упэўнены, што 512 байт паспяхова былі напісаны, таму што калі яны не былі паспяхова запісаны, то нешта пайшло не так. Мы будзем закрываць файлы, друкаваць, што нешта пайшло не так, і вяртанне. Мяркуючы, што ўсё ідзе правільна, то мы будзем трымаць цыкл закрыцця стары файл, адкрыўшы новы файл, ліст дадзеныя ў новы файл, і таму , Пакуль, нарэшце, гэта е не чытаць вяртае нуль, які сродкі што файл робіцца. Так што цяпер чытання карт скончыцца, мы бачыць, што мы збіраемся е зачыніць апошні файл, які мы павінны былі адкрыты, але мы правяраем, калі файл JPEG ня роўны NULL. Ну е блізка мае сэнс, таму як мы адкрываем файлы, мы зачыняемся папярэдні файл, але ў самы апошні файл, які мы адкрылі ніколі не зачыняецца. Дык вось што гэта робіць. Але чаму мы павінны праверыць на нуль? Ну што рабіць, калі карта кропка сыравіна не зрабіў мець адзіную JPEG ўнутры яго? У гэтым выпадку мы павінны былі б ніколі не адкрыў файл. І калі мы ніколі не адкрыць файл, мы павінны Не спрабуйце зачыніць файл. Дык вось што гэтая праверка робіць. Цяпер вось, як я ўжо сказаў, мы маглі б ўспыхнулі што ў пятлю альбо калі карта скончылася або калі ёсць некаторыя памылкі чытання з карты. Так што гэта правяраць, калі было памылка чытаньня з карты, у гэтым выпадку, мы будзем казаць там было памылка чытання. Мы не хочам, карыстальнік думаць усё прайшло паспяхова. І мы будзем вяртаць адно на памылку. Нарэшце, мы е зачыніць наш неапрацаваны файл, наша карта кропка сыравіну, каб паказаць, што усё прайшло добра і вяртанне нуля і ўсё тут. Мяне клічуць Боб, і гэта было аднавіць. [Музыка гуляе]