[Музички] Роб BOWDEN: Здраво. Јас сум Роб, и да се надеваме дека ова решение им помага ви стават на патот кон закрепнување. Па ајде да започнете. Можеме да видиме дека веднаш ние сме само за да бидете сигурни дека ние сме користејќи реставрирана правилно. Значи употребата само треба да биде нешто како dot коса црта опорави. Сега ние ќе треба да се отвори очекува картичка точка суровини датотека. Гледаме тука дека ние сме со користење на постојана суровини црта името на датотеката, кои до тука имаме хаш дефинира како картичка точка суровини. OK. Значи ние треба да бидете сигурни дека успешно отворен, бидејќи ако тоа не, тогаш треба да го предупреди корисникот. Но претпоставувајќи дека тоа го правеше, ние сме сега ќе се изјасни тампон на големината на JPEG името на датотеката должина. Па ова ќе биде тампон дека ние ќе sprintf во. Значи она што е JPEG име на датотека должина? Тука, можеме да видиме дека тоа е хаш се дефинира како осум. Па зошто осум? Па дадена датотека ќе биде именувана нешто како нула нула нула. JPG и тогаш ние треба обратна коса црта нула. Значи ние треба тампон кој може чувајте осум карактери. Сега ние ќе треба да имаат контра тоа е ќе ги пратите на број JPEG слики најдовме. И, конечно, ние ќе треба да имаат JPEG датотека која е првично нула кој ќе биде моментално да ја отворам датотеката, дека ние сме пишување да. Сега ние ќе треба да имаат дополнителни пуфер. Ова не е иста како и нашите sprintf тампон каде што оваа тампон е оној дека ние сме читање на податоци од картичката точка суровини. Па тампон ќе биде на непотпишана карактери, кој можете да во основа, само се однесуваат кон нас бајти, а тоа е ќе биде на големината блок големина каде што, како што ви кажам, блок големина е 512. Па JPEG слики можете да се третираат што е како блокови од 512 бајти. Сега ние ќе јамка во текот на целата датотека. Ние ќе ѓ прочита во нашите тампон еден бајт големина на блокови пати од картичката точка суровини датотека. Сега што е ѓ прочитате врати? Го враќа бројот на предмети дека успешно ја прочитате. Значи, ако тоа успеа да го прочитате 512 бајти, тогаш ние сакаме да видиме дали ова беше JPEG или напишете го на JPEG датотеки. И ако тоа не се врати 512 бајти, тогаш или на датотеката заврши во кој случај ние ќе се пробие на y јамка, или постојат некој вид на грешка во кој случај ние исто така ќе се пробие на на y јамка, но ние ќе сакате да го пријавите дека нешто тргнало наопаку. OK. Значи под претпоставка дека ние успешно се прочита во 512 бајти, ние сакаме да прво проверете да се направи дека овие бајти кои ние само да читате во почнат JPEG. Па ако е JPEG насловот на нашата тампон. Сега што е JPEG насловот правиш? Да ги погледнеме. Тука, можеме да видиме дека оваа функција е враќање бик, а тоа Бул - и тука, ние сме проверка за да види дали насловот нула еднаква оваа постојана и насловот еден е еднакво на оваа постојана и насловот две еднаква оваа постојана, насловот три еднаква на ова или ова постојана каде што сите овие константи се само хаш дефинирани токму тука и се токму она што ви реков во спецификации дека JPEG започнува со. И така оваа функција е само ќе врати вистина ако ова тампон претставува на почеток на нова JPEG и false. OK. Така да ако ова не претставува нова JPEG, тогаш ние прво сакате да се провери да се види дали JPEG датотека не е еднаква на нула, во кој случај ние го затворите. И така зошто не ни треба да се провери да се види дали тоа не е нула? И првиот JPEG дека ние најдете ние веќе не ќе има отворен JPEG датотека. И така, ако се обидеме да го затвори тоа, тогаш ние не правиш нешто сосема во право. Но секое последователно JPEG дека ќе ги отвориме, ние сакаме да се затвори претходниот фајл. Па сега ние ќе треба да се користи sprintf како што рече пред каде што ние сме со користење на тампон JPEG името на датотеката. И ние ќе го користите JPEG датотека Формат на име како наш формат. И што е тоа? Тука, можеме да видиме дека тоа е нула проценти 3D.JPEG каде нула три само вели дека ќе користи три цели броеви за овој ватирани со нули. Значи ова е како ние ќе добиете нула нула one.JPEG и нула 10.JPEG и така натаму. Ние ќе се користат sprintf. И број, дека ние сме вметнување во низа е вцепенен JPEG слики обнови, кое е првично нула. Значи првиот фајл отвори се случува да биде нула нула нула точка JPEG. А потоа ние сме го зголемува бројката па следен фајл ќе ги отвориме ќе биде нула нула една точка JPEG и ние ќе го прираст повторно, па тоа ќе биде нула нула две точки JPEG и така натаму. Во ред е. Па сега внатрешноста на JPEG датотека име, имаме името на поднесе дека сакаме. Ние можеме да ѓ отвори таа датотека за пишување. OK. И уште еднаш, ние треба да се провери да се направи сигурни дека датотеката е успешно отворен уште ако не, тогаш имаше некои грешка. Па сега сме добиле минатото е ова е JPEG дел. И тука, ние гледаме ние ќе да се напише на JPEG. Но ние прво треба оваа проверка која вели ако JPEG датотека не еднакви нула. Зошто ни треба тоа? И JPEG датотека е еднакво на нула кога ние Во моментов има отворен JPEG. Што ако картичка точка суровини започнува со еден куп на бајти кои не претставуваат JPEG? Тогаш ние ќе сакаат да прескокнете над оние бајти. Ако ние не ја имаат оваа проверка, тогаш ние сме ќе пишувам за неотворена датотека првиот 512 бајти на картичката, која не е добро. OK. Па претпоставуваме дека го имаме отворена датотека, тогаш ние ќе пишувам за таа датотека на 512 бајти што ја имаме во нашите тампон. И ние сме повторно проверка за да бидете дека 512 бајти успешно беа напишани, бидејќи ако тие не беа успешно запишана, тогаш нешто не беше во ред. Ќе ги затвориме нашите датотеки, печати дека нешто тргнало наопаку и да се врати. Претпоставувајќи се оди правилно, тогаш ние ќе продолжиме looping затворање на старата датотека, за отворање на новата датотека, пишување податоци на новата датотека, и така се додека, конечно, ова ѓ прочита враќа нула што значи дека датотеката е направено. Па сега дека картичка читање е над, ние видите дека ние ќе треба да ѓ затвори последните датотека што имавме отворени, но ние сме проверка, ако JPEG датотека не е еднакво на нула. И ѓ во близина има смисла, бидејќи како ние сме за отворање на датотеки, ги затвораме претходната датотека, но последен датотека која ги отворивме никогаш не добива затворени. Значи тоа е она што овој го прави. Но, зошто треба да се провери за ништовни? Па што ако картичка точка суровини не го имаат еден JPEG во него? Во тој случај, ќе имаме никогаш не отвори датотеката. И ако ние никогаш не се отвори датотеката, ние треба да Не обидувај се да се затвори таа датотека. Значи тоа е она што оваа проверка се прави. Сега тука, како што реков претходно, ние би можеле да имаат скршени дека у јамка или ако картичката заврши или ако постојат некои грешка при читање на картичката. Значи ова е проверка за да видат дали има грешка при читање од картичката, во кој случај, ние ќе кажеме дека беше грешка читање на. Ние не сакаме на корисникот да се размислува сè отиде успешно. И ние ќе се врати еден за грешка. Конечно, ние ќе ѓ затвориме нашите суровини датотека, нашата картичка точка суровини, да се покаже дека сето мина добро и да се врати нула и тоа е тоа. Моето име е Роб и ова беше реставрирана. [Музички]