1 00:00:00,000 --> 00:00:00,494 2 00:00:00,494 --> 00:00:13,350 >> [MUSIC nagpe-play] 3 00:00:13,350 --> 00:00:14,080 >> Rob BOWDEN: Hi. 4 00:00:14,080 --> 00:00:17,550 Ako Rob, at ni Umaasa hayaan na solusyon na ito ay tumutulong sa ilagay mo 5 00:00:17,550 --> 00:00:19,600 sa kalsada sa pagbawi. 6 00:00:19,600 --> 00:00:22,700 Kaya sabihin makapagsimula. 7 00:00:22,700 --> 00:00:25,660 >> Nakita namin na agad kami upang tiyakin lamang na kami ay 8 00:00:25,660 --> 00:00:27,170 Ibalik muli ang gumagamit ng tama. 9 00:00:27,170 --> 00:00:31,490 Kaya dapat na lamang ang paggamit ng isang bagay tulad ng tuldok slash mabawi. 10 00:00:31,490 --> 00:00:35,500 >> Ngayon kami ay pagpunta upang buksan ang inaasahan dot raw file card. 11 00:00:35,500 --> 00:00:39,740 Nakakakita kami dito na ginagamit namin ang pare-pareho ang file name raw salungguhit, 12 00:00:39,740 --> 00:00:44,200 saan dito ang mayroon kami ng hash tinukoy bilang card dot raw. 13 00:00:44,200 --> 00:00:45,030 OK. 14 00:00:45,030 --> 00:00:48,210 >> Kaya kailangan namin upang matiyak na na Matagumpay na binuksan dahil kung ito 15 00:00:48,210 --> 00:00:51,150 ay hindi, pagkatapos ay dapat naming bigyan ng babala ang user. 16 00:00:51,150 --> 00:00:56,770 Ngunit sa pag-aakala na ito ginawa, hindi namin ngayon pagpunta na idedeklara isang buffer ng laki JPEG 17 00:00:56,770 --> 00:00:58,170 maghain haba pangalan. 18 00:00:58,170 --> 00:01:02,060 Kaya ito ay magiging ang buffer na kami ay pagpunta sa sprintf sa. 19 00:01:02,060 --> 00:01:04,360 >> Kaya kung ano ay JPEG file haba pangalan? 20 00:01:04,360 --> 00:01:08,490 Hanggang dito, makikita natin na ito ay hash tinukoy bilang walo. 21 00:01:08,490 --> 00:01:10,670 Kaya bakit walo? 22 00:01:10,670 --> 00:01:15,150 Well isang naibigay na file ay pinangalanang isang bagay tulad ng zero zero zero. 23 00:01:15,150 --> 00:01:19,460 JPG at pagkatapos ay kailangan namin ng isang backslash zero. 24 00:01:19,460 --> 00:01:22,720 Kaya kailangan namin ng isang buffer na maaari mag-imbak ng walong mga character. 25 00:01:22,720 --> 00:01:25,190 Ngayon kami ay pagpunta sa magkaroon ng isang counter na pagpunta upang masubaybayan ang 26 00:01:25,190 --> 00:01:27,780 bilang JPEG na natagpuan namin. 27 00:01:27,780 --> 00:01:31,590 >> At sa wakas, kami ay pagpunta sa may JPEG file na kung saan ay sa simula null 28 00:01:31,590 --> 00:01:35,920 na kung saan ay pagpunta sa maging ang kasalukuyang mabuksan ang file na kami ay sumusulat upang. 29 00:01:35,920 --> 00:01:37,540 Ngayon kami ay pagpunta sa may dagdag na buffer. 30 00:01:37,540 --> 00:01:41,350 Ito ay hindi katulad ng aming sprintf buffer kung saan ito buffer ay ang isa 31 00:01:41,350 --> 00:01:45,020 na aming pagbabasa sa data mula sa card dot raw. 32 00:01:45,020 --> 00:01:48,900 >> Kaya ang buffer ay magiging ng unsigned char, kung saan maaari kang 33 00:01:48,900 --> 00:01:53,560 talaga ituturing lamang sa amin bytes, at ito ay pagpunta sa maging ng laki laki bloke 34 00:01:53,560 --> 00:01:57,950 kung saan, bilang sabihin namin sa iyo, bloke laki ay 512. 35 00:01:57,950 --> 00:02:03,070 Kaya ang mga JPEG na maaari mong ituring ang lahat ng bagay bilang mga bloke ng 512 bytes. 36 00:02:03,070 --> 00:02:05,890 >> Ngayon kami ay pagpunta sa loop sa ibabaw ng buong file. 37 00:02:05,890 --> 00:02:12,980 Kami ay pagpunta sa f basahin sa aming buffer isang solong beses ang laki ng bloke byte mula sa 38 00:02:12,980 --> 00:02:14,710 dot raw file sa card. 39 00:02:14,710 --> 00:02:16,630 Ngayon ano ang f basahin bumalik? 40 00:02:16,630 --> 00:02:20,050 Ibinabalik nito ang bilang ng mga item na matagumpay itong basahin. 41 00:02:20,050 --> 00:02:27,310 Kaya kung pinamamahalaang ito na basahin ang 512 bytes, pagkatapos ay nais naming makita kung ito ay isang 42 00:02:27,310 --> 00:02:29,700 JPEG o isulat ito sa isang JPEG file. 43 00:02:29,700 --> 00:02:34,450 At kung hindi ito bumalik 512 bytes, pagkatapos alinman ang file ay natapos sa 44 00:02:34,450 --> 00:02:37,870 kung saan ipapakita namin masira out sa y loop, o mayroong ilang mga uri ng mga error 45 00:02:37,870 --> 00:02:40,300 kung saan gagamitin din namin masira out sa y loop, ngunit gagamitin namin nais na mag-ulat 46 00:02:40,300 --> 00:02:41,990 na may nangyaring mali. 47 00:02:41,990 --> 00:02:42,290 >> OK. 48 00:02:42,290 --> 00:02:47,630 Kaya sa pag-aakala na matagumpay naming basahin sa 512 bytes, nais naming unang tseke 49 00:02:47,630 --> 00:02:53,070 upang gawin na ang mga bytes na namin basahin lamang sa magsimula ng isang JPEG. 50 00:02:53,070 --> 00:02:56,430 Kaya kung ang JPEG header ng aming buffer. 51 00:02:56,430 --> 00:02:58,460 Ngayon ano ito ay JPEG header ginagawa? 52 00:02:58,460 --> 00:03:00,120 Tingnan natin Hayaang. 53 00:03:00,120 --> 00:03:05,270 >> Hanggang dito, nakita namin na ito function ay bumabalik isang toro, at na toro - 54 00:03:05,270 --> 00:03:08,820 na rin dito, kami ng pagsuri upang makita kung header zero ay katumbas ito pare-pareho at 55 00:03:08,820 --> 00:03:11,880 header isa ay katumbas ito pare-pareho at Header ng dalawang katumbas ito pare-pareho, 56 00:03:11,880 --> 00:03:15,640 Header ng tatlong katumbas na ito o ito pare-pareho kung saan ang lahat ng mga constants ay 57 00:03:15,640 --> 00:03:20,340 hash lamang tinukoy dito mismo at ang mga eksakto kung ano ang sinabi namin sa iyo sa spec 58 00:03:20,340 --> 00:03:22,700 na isang JPEG ay nagsisimula sa. 59 00:03:22,700 --> 00:03:27,300 At kaya ito function ay pagpunta lamang sa nagbabalik ng tunay na kung ito ay kumakatawan sa buffer 60 00:03:27,300 --> 00:03:31,750 sa simula ng isang bagong JPEG at hindi totoo kung hindi man. 61 00:03:31,750 --> 00:03:32,520 >> OK. 62 00:03:32,520 --> 00:03:38,490 Kaya kung ito ang kumakatawan sa isang bagong JPEG, pagkatapos namin gusto munang suriin upang makita kung 63 00:03:38,490 --> 00:03:42,030 JPEG file ay hindi kapantay sa null, sa kasong ito isara namin ito. 64 00:03:42,030 --> 00:03:44,940 At kaya bakit kailangan naming suriin upang makita kung ito ay hindi null? 65 00:03:44,940 --> 00:03:48,980 Well ang pinakaunang JPEG na namin makahanap ng hindi namin na magkakaroon ng 66 00:03:48,980 --> 00:03:50,440 isang open JPEG file. 67 00:03:50,440 --> 00:03:55,580 At kaya, kung sinusubukan naming isara na, pagkatapos ay Hindi namin paggawa ng isang bagay masyadong tama. 68 00:03:55,580 --> 00:03:59,090 >> Subalit ang bawat kasunod na JPEG na buksan namin, gusto naming isara 69 00:03:59,090 --> 00:04:00,710 ang nakaraang file. 70 00:04:00,710 --> 00:04:04,630 Kaya ngayon kami ay pagpunta sa gamitin sprintf bilang namin Sinabi bago kung saan ginagamit namin ang 71 00:04:04,630 --> 00:04:06,280 buffer JPEG file name. 72 00:04:06,280 --> 00:04:09,870 At kami ay pagpunta sa gamitin JPEG file pangalanan format bilang aming mga format. 73 00:04:09,870 --> 00:04:12,030 At kung ano ay na? 74 00:04:12,030 --> 00:04:18,450 Hanggang dito, makikita natin na ito ay porsyento zero 3D.JPEG kung saan ang zero tatlo lamang 75 00:04:18,450 --> 00:04:22,089 sabi na gagamitin namin tatlong integer para sa may palaman na may mga zero. 76 00:04:22,089 --> 00:04:27,470 Kaya ito ay kung paano aasikasuhin namin zero zero one.JPEG at zero 10.JPEG at iba pa. 77 00:04:27,470 --> 00:04:29,060 >> Kami ay pagpunta sa gumamit ng sprintf. 78 00:04:29,060 --> 00:04:33,760 At ang integer na aming pagpasok sa string ay manhid ang mga JPEG na 79 00:04:33,760 --> 00:04:36,380 nakuhang muli, na kung saan ay orihinal na zero. 80 00:04:36,380 --> 00:04:39,950 Kaya binuksan ang unang file ay pagpunta upang maging zero zero JPEG zero na tuldok. 81 00:04:39,950 --> 00:04:43,330 At pagkatapos kami ay incrementing ito nang sa gayon ang susunod na file buksan namin zero zero 82 00:04:43,330 --> 00:04:46,830 isa na tuldok na JPEG at kami dinagdagan ito muli sa gayon ito ay zero zero dalawang tuldok 83 00:04:46,830 --> 00:04:49,100 JPEG at iba pa. 84 00:04:49,100 --> 00:04:49,850 >> Ayos lang. 85 00:04:49,850 --> 00:04:53,210 Kaya ngayon ang loob ng JPEG file pangalanan, mayroon kaming ang pangalan ng 86 00:04:53,210 --> 00:04:54,990 mag-file na gusto namin. 87 00:04:54,990 --> 00:04:58,640 Maaari f namin buksan na file para sa pagsusulat. 88 00:04:58,640 --> 00:04:59,170 OK. 89 00:04:59,170 --> 00:05:02,820 At sa sandaling muli, kailangan naming suriin upang Tiyakin na matagumpay ang file 90 00:05:02,820 --> 00:05:08,460 binuksan dahil kung ginawa ito hindi, pagkatapos ay nagkaroon ng ilang mga error. 91 00:05:08,460 --> 00:05:13,100 >> Kaya ngayon na nakuha namin ang nakaraan ay ito ng isang bahagi ng JPEG. 92 00:05:13,100 --> 00:05:16,390 At dito, makikita natin kami ay pagpunta na magsulat sa JPEG. 93 00:05:16,390 --> 00:05:20,980 Ngunit muna naming magkaroon check ito na sabi kung JPEG file ay hindi katumbas null. 94 00:05:20,980 --> 00:05:22,490 Bakit kailangan namin na? 95 00:05:22,490 --> 00:05:28,020 Well JPEG file ay katumbas null kailan namin Kasalukuyang mayroon ng isang bukas na JPEG. 96 00:05:28,020 --> 00:05:31,870 >> Paano kung card tuldok raw mga pagsisimula may isang bungkos ng mga byte na 97 00:05:31,870 --> 00:05:33,510 huwag kumakatawan sa isang JPEG? 98 00:05:33,510 --> 00:05:36,240 Pagkatapos kami ay pagpunta sa nais na laktawan sa paglipas ng mga bytes. 99 00:05:36,240 --> 00:05:39,600 Kung wala kaming ang pagsusuring ito, pagkatapos kami ay pagpunta sa magsulat sa isang di pa nabubuksang 100 00:05:39,600 --> 00:05:45,540 maghain ng unang 512 bytes ng ang card na kung saan ay hindi mabuti. 101 00:05:45,540 --> 00:05:46,030 OK. 102 00:05:46,030 --> 00:05:51,330 >> Kaya kung ipagpalagay na mayroon kami ng isang bukas na file, pagkatapos ay kami ay pagpunta sa sumulat sa file na iyon ang 103 00:05:51,330 --> 00:05:53,290 512 bytes na mayroon kami sa aming buffer. 104 00:05:53,290 --> 00:05:57,390 At kami ay isang beses muli pagsuri upang gawing Tiyakin na ang 512 bytes matagumpay 105 00:05:57,390 --> 00:06:01,140 ay nakasulat dahil kung hindi Matagumpay na nakasulat, pagkatapos ng isang bagay 106 00:06:01,140 --> 00:06:02,080 nangyaring mali. 107 00:06:02,080 --> 00:06:06,540 Susubukan naming isara ang aming mga file, i-print na may nangyaring mali, at pagbalik. 108 00:06:06,540 --> 00:06:10,940 Mangyaring hindi tama ang pag-aako ng lahat ng bagay, at pagkatapos ay magtatago kami ng looping isinasara ang 109 00:06:10,940 --> 00:06:15,060 lumang file, pagbubukas ng bagong file, pagsulat data sa bagong file, at sa gayon 110 00:06:15,060 --> 00:06:20,990 sa hanggang sa wakas, ito f basahin Ibinabalik ng zero na paraan 111 00:06:20,990 --> 00:06:23,280 na ang file ay tapos na. 112 00:06:23,280 --> 00:06:28,490 >> Kaya ngayon na ang card pagbabasa ay higit sa, namin makita na kami ay pagpunta sa f isara ang 113 00:06:28,490 --> 00:06:33,250 huling file na namin ay may bukas, ngunit kami Sinusuri kung JPEG file 114 00:06:33,250 --> 00:06:34,900 hindi pantay null. 115 00:06:34,900 --> 00:06:39,520 Well ang f malapit saysay dahil bilang naka pagbukas namin ng mga file, kami ay pagsasara 116 00:06:39,520 --> 00:06:43,870 ang nakaraang file, ngunit ang napaka-huling file na namin nabuksan hindi kailanman ay makakakuha ng sarado. 117 00:06:43,870 --> 00:06:45,580 Kaya na kung ano ito ay ginagawa. 118 00:06:45,580 --> 00:06:47,720 >> Ngunit kung bakit kailangan namin upang suriin para sa null? 119 00:06:47,720 --> 00:06:53,130 Well paano kung card tuldok raw ginawang hindi magkaroon ng iisang JPEG sa loob nito? 120 00:06:53,130 --> 00:06:56,640 Sa kasong iyon, gusto naming magkaroon Hindi kailanman binuksan ang isang file. 121 00:06:56,640 --> 00:07:00,230 At kung hindi namin mabuksan ang isang file, dapat namin hindi subukan upang isara ang file na iyon. 122 00:07:00,230 --> 00:07:03,000 Kaya na kung ano ang ginagawa ang check. 123 00:07:03,000 --> 00:07:07,880 >> Ngayon dito, tulad ng sinabi ko dati, magagawa namin Nabalian out na y loop alinman sa kung 124 00:07:07,880 --> 00:07:13,520 Nagwakas na ang card o kung may mga ang ilang mga error sa pagbabasa mula sa card. 125 00:07:13,520 --> 00:07:16,680 Kaya ito ay pag-check upang makita kung nagkaroon isang error sa pagbabasa mula sa card, sa 126 00:07:16,680 --> 00:07:19,400 Kung saan, magpapadala kami nating mayroong isang error sa pagbabasa. 127 00:07:19,400 --> 00:07:22,130 Hindi namin gusto ang user mag-isip Matagumpay na nagpunta ang lahat. 128 00:07:22,130 --> 00:07:24,750 At magbabalik kami ng isa para sa error. 129 00:07:24,750 --> 00:07:29,580 >> Sa wakas, makikita namin f isara ang aming mga raw file, ang aming card dot raw, upang isaad na 130 00:07:29,580 --> 00:07:34,070 nagpunta na rin at balik lahat ng bagay ZERO at iyon ito. 131 00:07:34,070 --> 00:07:36,130 >> Ang pangalan ko ay Rob at ito ay Ibalik muli. 132 00:07:36,130 --> 00:07:42,102 >> [MUSIC nagpe-play]