>> [Muusika mängib]
>> ROB BOWDEN: Hi.
Olen Rob ja loodame, et see lahendus aitab sind
on taastumiseks.
Niisiis alustame.
>> Me näeme, et kohe oleme lihtsalt veendumaks, et me oleme
kasutades taastada õigesti.
Nii kasutamine peaks lihtsalt olema midagi nagu dot kaldkriipsuga taastuda.
>> Nüüd me ei kavatse avada oodata kaart dot raw faili.
Me näeme siin, et me kasutame pidev toores alakriips faili nimi
mis siin üleval on meil hash defineeritud kaart dot toores.
OK.
>> Seega peame tagama, et see edukalt avanud, sest kui see
ei, siis me peaks hoiatama kasutaja.
Kuid kui eeldada, et ta seda tegi, me oleme nüüd kavatse kuulutada puhvri suurus JPEG
failinimi pikkus.
Nii et see saab olema puhver, mis me sprintf arvesse.
>> Mis on JPEG faili nimi pikkus?
Siin me näeme, et see on hash määratletakse kaheksa.
Miks kaheksa?
Noh antud faili nimeks saab midagi nagu null null null.
JPG ja siis peame längkriipsu null.
Seega peame puhver, mis võivad salvestada kaheksa märki.
Nüüd lähed on counter, mis on kavatse jälgida
number JPEG leidsime.
>> Ja lõpuks, me ei kavatse olla JPEG-fail, mis on esialgu null
mis saab olema praegu avatud faili, et me kirjutame.
Nüüd lähed on täiendavat puhvrit.
See ei ole sama kui meie sprintf puhverdada, kui see on puhver ühe
et me loed andmed Kaardilt dot toores.
>> Nii puhvrit saab olema allkirjastamata tähemärki, mida saab
põhimõtteliselt ainult kohtlevad meid baiti, ja see on saab olema suurus ploki suurus
kus, nagu me ütleme teile, ploki suurus on 512.
Nii JPEG saab ravida kõik kui klotsid 512 baiti.
>> Nüüd me loop kogu faili.
Me f lugeda meie puhver ühe baidi blokisuurus korda
kaart dot raw faili.
Nüüd, mida ei f lugeda tagasi?
See tagastab arvu punkte et see edukalt lugeda.
Nii et kui ta suutis lugeda 512 baiti, siis Me tahame näha, kas see oli
JPEG või kirjutada seda JPEG faili.
Ja kui ta ei tagastanud 512 baiti siis kas fail on lõppenud
mille puhul me välja murda y loop, või on mingi viga
mille puhul me ka välja murda y silmus, kuid me tahame aru
et midagi läks valesti.
>> OK.
Seega eeldades, et me edukalt lugeda aastal 512 baiti, tahame kõigepealt check
teha, et need baidid, et me lihtsalt lugeda alustada JPEG.
Nii et kui on JPEG päises meie puhver.
Nüüd sellest, mis on JPEG header teed?
Vaatame.
>> Siin me näeme, et see funktsioon on tagastamise pulli ja härja -
ka siin, me kontrollime, kas header null võrdub see pidev ja
header üks võrdub see pidev ja header kaks võrdub see pidev,
header kolm võrdub see või see pidev kus kõik need konstandid on
lihtsalt hash defineeritud siin ja on täpselt, mida me teile rääkinud spec
et JPEG algab.
Ja nii see funktsioon on ainult kavatse tagasi true kui puhver on
algab uus JPEG ja vale teisiti.
>> OK.
Niisiis, kui see on uus JPEG, siis kõigepealt on ju vaadata, kui
JPEG-faili ei ole võrdne null, mille puhul me sulgeda.
Ja miks me vajame, et kontrollida et näha, kas see ei ole null?
Noh kõige esimene JPEG et me leia me veel ei ole
avatud JPEG faili.
Ja nii, kui me püüame sulgeda, et siis me ei tee midagi päris õige.
>> Kuid iga järgnev JPEG et avame me tahame sulgeda
Eelmise faili.
Nüüd me ei kavatse kasutada sprintf kui me ütles enne, kui me kasutame
puhver JPEG faili nimi.
Ja me ei kavatse kasutada JPEG fail nimekuju meie formaat.
Ja mis see on?
Siin me näeme, et see on protsent null 3D.JPEG kui null kolm lihtsalt
ütleb, et me kasutame kolm täisarvu Selle polsterdatud nullidega.
Nii et see on see, kuidas me saame null null one.JPEG ja null 10.JPEG ja nii edasi.
>> Me ei kavatse kasutada sprintf.
Ja täisarv, et me lisades arvesse string on tuim JPEG
taaskasutatakse, mis on algselt null.
Nii esimese faili avada saab null null null dot JPEG.
Ja siis me incrementing see nii järgmist pilti avame null null
üks dot JPEG ja me juurdekasvu see jälle nii, et see saab olema null null kaks dot
JPEG ja nii edasi.
>> Hea küll.
Nüüd sees JPEG fail Nime, meil on nimi
fail, mida me tahame.
Saame f avada seda faili kirjutamiseks.
OK.
Ja veelkord, peame kontrollima, et Veenduge, et fail on edukalt
avatud, sest kui see ei ole, siis seal oli viga.
>> Nüüd oleme saanud varem see JPEG osa.
Ja siin näeme me kirjutada JPEG.
Aga kõigepealt on see kontroll, mis ütleb, kui JPEG fail ei võrdu null.
Miks meil seda vaja on?
Noh JPEG faili võrdub null, kui me Praegu on avatud JPEG.
>> Mis siis, kui kaart dot toores algab kamp bytes et
ei kujuta JPEG?
Siis me tahame Otse üle need baiti.
Kui me ei ole seda vaadata, siis oleme kavatse kirjutada avamata
esitama esimese 512 baiti kaart, mis ei ole hea.
OK.
>> Seega eeldades, et meil on avatud fail, siis me kirjutada, et fail
512 bytes, et meil on meie puhver.
Ja me taas kontroll teha kindel, et 512 baiti edukalt
kanti sest kui nad ei olnud edukalt kirjutatud, siis midagi
valesti läks.
Me sulgeme oma faile printida, et midagi läks valesti, ja tagasi.
Eeldades, et kõik läheb õigesti, siis hoiame silmukoiminen sulgemist
vana faili, avades uue faili, kirjalikult andmed uue faili, jne
edasi, kuni lõpuks see f lugeda tagastab null mille abil
et fail on tehtud.
>> Nüüd, et kaardi lugemine on lõppenud, me näha, et me ei kavatse f sulgeda
viimane fail, mis meil oli avatud, kuid me kontrollime kui JPEG fail
ei võrdu null.
Noh f lähedal loogiline, sest kui me avame faili, me sulgeme
Eelmise faili, kuid viimasel file et avasime kunagi saab sulgeda.
Nii see on, mida see teeb.
>> Aga miks meil on vaja kontrollida null?
Noh mis siis, kui kaart dot toores ei on ühtse JPEG sees on?
Sellisel juhul oleks meil kunagi avanud faili.
Ja kui me ei ava faili, peaksime üritage sulgeda see fail.
Nii see on, mida see kontroll teeb.
>> Nüüd, nagu ma enne ütlesin, me võiksime on puhkenud, et y silmus kas kui
kaart on lõppenud või kui on mõni viga lugemine kaardiga.
Nii et see on kontroll, et näha, kas seal oli viga lugemine kaardi sisse
mis juhul me ütleme, et Tekkis viga lugemisel.
Me ei soovi, et kasutaja mõtlema kõik läks edukalt.
Ja me tagasi üks viga.
>> Lõpuks me f sulgeda raw faili Meie kaardi dot toores, mis näitab, et
kõik läks hästi ja tagastamine null ja see on kõik.
>> Minu nimi on Rob ja see oli taastada.
>> [Muusika mängib]