1 00:00:00,000 --> 00:00:00,494 2 00:00:00,494 --> 00:00:13,350 >> [MUSIC Playing] 3 00:00:13,350 --> 00:00:14,080 >> Rob Bowden: Hi. 4 00:00:14,080 --> 00:00:17,550 Unë jam Rob, dhe le të shpresojmë se kjo zgjidhje ndihmon ju vë 5 00:00:17,550 --> 00:00:19,600 në rrugën e shërimit. 6 00:00:19,600 --> 00:00:22,700 Pra, le të ketë filluar. 7 00:00:22,700 --> 00:00:25,660 >> Ne e shohim se menjëherë ne jemi vetëm për të siguruar që ne jemi 8 00:00:25,660 --> 00:00:27,170 duke përdorur Recover saktë. 9 00:00:27,170 --> 00:00:31,490 Pra, përdorimi duhet të jetë vetëm diçka si dot slash shërohen. 10 00:00:31,490 --> 00:00:35,500 >> Tani ne jemi duke shkuar për të hapur pritur kartë dot skedarin papërpunuara. 11 00:00:35,500 --> 00:00:39,740 Ne shohim këtu se ne jemi duke përdorur underscore papërpunuara Emri konstante fotografi, 12 00:00:39,740 --> 00:00:44,200 të cilat deri këtu kemi hash përcaktuar si kartë dot para. 13 00:00:44,200 --> 00:00:45,030 OK. 14 00:00:45,030 --> 00:00:48,210 >> Pra, ne duhet të sigurohemi që kjo u hap me sukses, sepse në qoftë se ajo 15 00:00:48,210 --> 00:00:51,150 nuk ka, atëherë ne duhet të paralajmërojnë përdoruesit. 16 00:00:51,150 --> 00:00:56,770 Por duke supozuar se ai e bëri, ne jemi tani do të shpallë një tampon të madhësisë JPEG 17 00:00:56,770 --> 00:00:58,170 paraqesë gjatësi emrin. 18 00:00:58,170 --> 00:01:02,060 Pra, kjo do të jetë tampon që ne jemi duke shkuar për sprintf në. 19 00:01:02,060 --> 00:01:04,360 >> Pra, çfarë është e JPEG fotografi gjatësi emrin? 20 00:01:04,360 --> 00:01:08,490 Deri këtu, ne shohim se kjo është hash përcaktuar si tetë. 21 00:01:08,490 --> 00:01:10,670 Pra, pse të tetë? 22 00:01:10,670 --> 00:01:15,150 E pra një file i dhënë do të quhet diçka si zero zero zero. 23 00:01:15,150 --> 00:01:19,460 JPG dhe pastaj të kemi nevojë për një backslash zero. 24 00:01:19,460 --> 00:01:22,720 Pra, ne kemi nevojë për një tampon që mund dyqan tetë karaktere. 25 00:01:22,720 --> 00:01:25,190 Tani ne do të kemi një kundër që është e do të mbajnë gjurmët e 26 00:01:25,190 --> 00:01:27,780 JPEGs numër kemi gjetur. 27 00:01:27,780 --> 00:01:31,590 >> Dhe në fund, ne do të kemi një JPEG fotografi e cila është fillimisht null 28 00:01:31,590 --> 00:01:35,920 cila do të jenë aktualisht fotografi të hapur se ne jemi me shkrim për të. 29 00:01:35,920 --> 00:01:37,540 Tani ne do të kemi një tampon shtesë. 30 00:01:37,540 --> 00:01:41,350 Kjo nuk është e njëjtë si sprintf tonë tampon ku kjo buffer është ai 31 00:01:41,350 --> 00:01:45,020 se ne jemi duke lexuar në të dhënat e nga kartë dot para. 32 00:01:45,020 --> 00:01:48,900 >> Kështu buffer do të jenë të chars të panënshkruara, të cilat ju mund të 33 00:01:48,900 --> 00:01:53,560 në thelb vetëm të na trajtojnë bytes, dhe është e do të jetë e madhësisë bllok madhësisë 34 00:01:53,560 --> 00:01:57,950 ku, siç thoni ju, Madhësia bllok është 512. 35 00:01:57,950 --> 00:02:03,070 Pra JPEGs ju mund trajtoni çdo gjë si blloqe të 512 bytes. 36 00:02:03,070 --> 00:02:05,890 >> Tani ne jemi duke shkuar për lak mbi të gjithë dosjen. 37 00:02:05,890 --> 00:02:12,980 Ne jemi duke shkuar për f lexuar në tampon tonë një të vetme herë madhësia bllok byte nga 38 00:02:12,980 --> 00:02:14,710 kartë dot skedarin papërpunuara. 39 00:02:14,710 --> 00:02:16,630 Tani ajo ka f lexuar kthehet? 40 00:02:16,630 --> 00:02:20,050 Ajo kthen numrin e artikujve se ai lexuar me sukses. 41 00:02:20,050 --> 00:02:27,310 Pra, në qoftë se ajo arriti të lexuar 512 bytes, atëherë ne duam të shohim nëse kjo ishte një 42 00:02:27,310 --> 00:02:29,700 JPEG ose shkruani atë në një skedar JPEG. 43 00:02:29,700 --> 00:02:34,450 Dhe në qoftë se ajo nuk u kthye 512 bytes, pastaj ose fotografi e ka përfunduar në 44 00:02:34,450 --> 00:02:37,870 këtë rast ne do të thyer nga y loop, ose ka një lloj të gabimit 45 00:02:37,870 --> 00:02:40,300 rast në të cilin ne gjithashtu do të thyer nga y lak, por ne do të duan për të raportuar 46 00:02:40,300 --> 00:02:41,990 se diçka shkoi keq. 47 00:02:41,990 --> 00:02:42,290 >> OK. 48 00:02:42,290 --> 00:02:47,630 Pra, duke supozuar që ne me sukses të lexuar në 512 bytes, ne duam të kontrolloni të parë 49 00:02:47,630 --> 00:02:53,070 për të bërë që këto bytes se ne vetëm lexuar në të fillojë një JPEG. 50 00:02:53,070 --> 00:02:56,430 Pra, nëse është JPEG kokë të tampon tonë. 51 00:02:56,430 --> 00:02:58,460 Tani çfarë ajo është duke JPEG header duke bërë? 52 00:02:58,460 --> 00:03:00,120 Le të shikojmë. 53 00:03:00,120 --> 00:03:05,270 >> Deri këtu, shohim se ky funksion është kthyer një dem, dhe se dem - 54 00:03:05,270 --> 00:03:08,820 edhe këtu, ne jemi duke kontrolluar për të parë nëse header zero është e barabartë me këtë konstante dhe 55 00:03:08,820 --> 00:03:11,880 header një është e barabartë në këtë konstante dhe header dy është e barabartë në këtë konstante, 56 00:03:11,880 --> 00:03:15,640 header tre është e barabartë me këtë apo këtë vazhdueshme ku të gjitha këto janë konstantet 57 00:03:15,640 --> 00:03:20,340 vetëm të hash definuar këtu dhe janë pikërisht ajo që ne i tha ju në spekulim 58 00:03:20,340 --> 00:03:22,700 se një JPEG fillon me. 59 00:03:22,700 --> 00:03:27,300 Dhe kështu ky funksion është vetëm do të kthim i vërtetë nëse kjo tampon paraqet 60 00:03:27,300 --> 00:03:31,750 fillimi i një JPEG të ri dhe false ndryshe. 61 00:03:31,750 --> 00:03:32,520 >> OK. 62 00:03:32,520 --> 00:03:38,490 Pra, nëse kjo paraqet një JPEG të re, atëherë ne së pari të dëshironi të shikoni për të parë nëse 63 00:03:38,490 --> 00:03:42,030 JPEG fotografi nuk është e barabartë me null, rast në të cilin ne e mbyllur atë. 64 00:03:42,030 --> 00:03:44,940 Dhe kështu që pse nuk kemi nevojë për të kontrolluar për të parë nëse kjo nuk është null? 65 00:03:44,940 --> 00:03:48,980 Well JPEG e parë që ne të të gjeni ne nuk do të keni 66 00:03:48,980 --> 00:03:50,440 një skedar të hapur JPEG. 67 00:03:50,440 --> 00:03:55,580 Dhe kështu, në qoftë se ne të përpiqemi për të mbyllur atë, atëherë ne nuk jemi duke bërë diçka mjaft e drejtë. 68 00:03:55,580 --> 00:03:59,090 >> Por çdo JPEG pasuese që ne hapur, ne duam të mbyllur 69 00:03:59,090 --> 00:04:00,710 fotografinë paraardhëse. 70 00:04:00,710 --> 00:04:04,630 Deri tani ne jemi duke shkuar për të përdorur sprintf si ne thënë më parë ku ne jemi duke përdorur 71 00:04:04,630 --> 00:04:06,280 Emri tampon JPEG fotografi. 72 00:04:06,280 --> 00:04:09,870 Dhe ne jemi duke shkuar për të përdorur skedarë JPEG format të përmendur si format tonë. 73 00:04:09,870 --> 00:04:12,030 Dhe çfarë është ajo? 74 00:04:12,030 --> 00:04:18,450 Deri këtu, ne e shohim se ajo është zero për qind 3D.JPEG ku tre zero vetëm 75 00:04:18,450 --> 00:04:22,089 thotë se ne do të përdorim tre numra të plotë për këtë i mbushur me zero. 76 00:04:22,089 --> 00:04:27,470 Pra, kjo është se si ne do të merrni zero zero one.JPEG dhe zero 10.JPEG dhe kështu me radhë. 77 00:04:27,470 --> 00:04:29,060 >> Ne jemi duke shkuar për të përdorur sprintf. 78 00:04:29,060 --> 00:04:33,760 Dhe numër i plotë që ne jemi futur në string është JPEGs mpirë 79 00:04:33,760 --> 00:04:36,380 shëruar, cili është fillimisht zero. 80 00:04:36,380 --> 00:04:39,950 Pra dosja e parë u hap po shkon të jetë zero zero zero dot JPEG. 81 00:04:39,950 --> 00:04:43,330 Dhe atëherë ne jemi duke e rrisim atë në mënyrë fotografinë pasardhësenext ne të hapur do të jetë zero zero 82 00:04:43,330 --> 00:04:46,830 një dot JPEG dhe ne do rritje atë përsëri kështu që ajo do të jetë zero zero dy dot 83 00:04:46,830 --> 00:04:49,100 JPEG dhe kështu me radhë. 84 00:04:49,100 --> 00:04:49,850 >> Dakord. 85 00:04:49,850 --> 00:04:53,210 Deri tani brenda JPEG dosjes emrin, ne kemi emrin e 86 00:04:53,210 --> 00:04:54,990 paraqesë që ne duam. 87 00:04:54,990 --> 00:04:58,640 Ne mund të f të hapur këtë dosje për të shkruar. 88 00:04:58,640 --> 00:04:59,170 OK. 89 00:04:59,170 --> 00:05:02,820 Dhe edhe një herë, ne kemi nevojë për të kontrolluar për të i sigurt se dosja me sukses 90 00:05:02,820 --> 00:05:08,460 hapur që në qoftë se ajo nuk e bëri, atëherë ka pasur disa gabim. 91 00:05:08,460 --> 00:05:13,100 >> Deri tani ne kemi marrë kaluara është kjo një pjesë JPEG. 92 00:05:13,100 --> 00:05:16,390 Dhe këtu, ne e shohim ne do për të shkruar në JPEG. 93 00:05:16,390 --> 00:05:20,980 Por ne së pari kemi këtë kontroll e cila thotë nëse JPEG fotografi nuk ka null barabartë. 94 00:05:20,980 --> 00:05:22,490 Pse kemi nevojë për këtë? 95 00:05:22,490 --> 00:05:28,020 E pra JPEG fotografi është e barabartë null kur ne aktualisht kanë një JPEG hapur. 96 00:05:28,020 --> 00:05:31,870 >> Çfarë ndodh nëse fillon kartë dot para me një bandë e bytes që 97 00:05:31,870 --> 00:05:33,510 nuk paraqesin JPEG? 98 00:05:33,510 --> 00:05:36,240 Pastaj ne do të duan të kaloni mbi ato bytes. 99 00:05:36,240 --> 00:05:39,600 Nëse ne nuk e kemi këtë kontroll, atëherë ne jemi duke shkuar për të shkruar për të një e pahapur 100 00:05:39,600 --> 00:05:45,540 të ruajnë të 512 bytes e para të kartë e cila nuk është e mirë. 101 00:05:45,540 --> 00:05:46,030 OK. 102 00:05:46,030 --> 00:05:51,330 >> Pra, duke supozuar ne kemi një file të hapur, atëherë ne jemi duke shkuar për të shkruar për këtë dosje 103 00:05:51,330 --> 00:05:53,290 512 bytes se ne kemi në tampon tonë. 104 00:05:53,290 --> 00:05:57,390 Dhe ne jemi edhe një herë duke kontrolluar për të bërë i sigurt se 512 bytes sukses 105 00:05:57,390 --> 00:06:01,140 janë shkruar, sepse në qoftë se ata nuk ishin të shkruar me sukses, atëherë diçka 106 00:06:01,140 --> 00:06:02,080 shkoi keq. 107 00:06:02,080 --> 00:06:06,540 Ne do të mbyllë dosjet tona, të shtypura që diçka shkoi keq, dhe të kthimit. 108 00:06:06,540 --> 00:06:10,940 Duke supozuar çdo gjë shkon si duhet, atëherë ne do të vazhdojmë looping mbylljes 109 00:06:10,940 --> 00:06:15,060 fotografi e vjetër, duke hapur skedar të ri, shkrim të dhënat në dosjen e ri, dhe kështu 110 00:06:15,060 --> 00:06:20,990 për deri sa më në fund, kjo f lexoni kthehet zero cilat mjete 111 00:06:20,990 --> 00:06:23,280 se dosja është bërë. 112 00:06:23,280 --> 00:06:28,490 >> Pra, tani që leximi kartë është e gjatë, ne shih se ne do të f mbyllur 113 00:06:28,490 --> 00:06:33,250 fotografi e fundit që kemi pasur të hapur, por ne jemi duke kontrolluar nëse JPEG fotografi 114 00:06:33,250 --> 00:06:34,900 bën null jo të barabartë. 115 00:06:34,900 --> 00:06:39,520 Well f ngushtë ka kuptim, sepse si ne jemi duke hapjes së dosjeve, ne jemi duke mbyllur 116 00:06:39,520 --> 00:06:43,870 fotografinë paraardhëse, por shumë e fundit fotografi që u hap ne kurrë nuk merr mbyllur. 117 00:06:43,870 --> 00:06:45,580 Pra, kjo është ajo që kjo është duke bërë. 118 00:06:45,580 --> 00:06:47,720 >> Por pse ne kemi nevojë për të kontrolluar për null? 119 00:06:47,720 --> 00:06:53,130 E pra çfarë nëse karta dot të para nuk ka kanë një JPEG të vetëm në brendësi të saj? 120 00:06:53,130 --> 00:06:56,640 Në këtë rast, ne do të kemi kurrë nuk u hap një fotografi. 121 00:06:56,640 --> 00:07:00,230 Dhe në qoftë se ne nuk të hapur një skedar, ne duhet nuk përpiqet për të mbyllur këtë dosje. 122 00:07:00,230 --> 00:07:03,000 Pra, kjo është ajo që është duke e bërë këtë kontroll. 123 00:07:03,000 --> 00:07:07,880 >> Tani këtu, siç kam thënë më parë, ne mund të kanë shpërthyer se y lak ose nëse 124 00:07:07,880 --> 00:07:13,520 kartë ka përfunduar, ose në qoftë se ka disa gabim leximi nga karta. 125 00:07:13,520 --> 00:07:16,680 Pra, kjo është e kontrolluar për të parë nëse ka pasur një gabim leximi nga karta, në 126 00:07:16,680 --> 00:07:19,400 këtë rast, ne do të thonë se nuk ishte një lexim gabim. 127 00:07:19,400 --> 00:07:22,130 Ne nuk duam përdoruesin të mendojnë gjithçka shkoi me sukses. 128 00:07:22,130 --> 00:07:24,750 Dhe ne do të kthehemi një të tillë për gabim. 129 00:07:24,750 --> 00:07:29,580 >> Së fundi, ne do të f mbyllur dosjen tonë të papërpunuara, kartë tonë dot para, për të treguar se 130 00:07:29,580 --> 00:07:34,070 çdo gjë shkoi mirë dhe kthimi zero dhe kjo është ajo. 131 00:07:34,070 --> 00:07:36,130 >> Emri im është Rob dhe kjo ishte shërohen. 132 00:07:36,130 --> 00:07:42,102 >> [MUSIC Playing]