>> [MUZYKA GRA]
>> ROB BOWDEN Cześć.
Jestem Rob, i miejmy nadzieję, że To rozwiązanie pozwala umieścić
na drodze do wyzdrowienia.
Więc zaczynajmy.
>> Widzimy, że od razu jesteśmy by upewnić się, że jesteśmy
korzystając Odzyskaj poprawnie.
Więc użycie powinno być coś tylko jak dot ukośnik odzyskać.
>> Teraz mamy zamiar otworzyć oczekiwano Karta dot surowy plik.
Widzimy tutaj, że używamy stała nazwa pliku raw podkreślenia,
które tutaj mamy hash zdefiniowana jako karta dot surowy.
OK.
>> Więc musimy się upewnić, że pomyślnie otwarty bo jeśli
nie, to powinniśmy ostrzec użytkownika.
Ale zakładając, że nie jesteśmy teraz zamiar zadeklarować bufor o rozmiarze JPEG
długość nazwy pliku.
Więc to będzie bufor jedziemy do sprintf do.
>> Tak więc to, co jest długość nazwy pliku JPEG?
Tutaj widzimy, że jest to hash zdefiniowane jako osiem.
Więc dlaczego osiem?
Dobrze dany plik zostanie nazwany coś jak zero zero zero.
JPG i wtedy musimy odwrotny ukośnik zera.
Więc musimy bufor, który może przechowywać osiem znaków.
Teraz będziemy mieć licznik, który jest będzie śledzić
Numer JPEG znaleźliśmy.
>> I wreszcie będziemy mieć Plik JPEG, który jest początkowo wartość null
który będzie obecnie otworzyć pliku, że piszemy do.
Teraz będziemy mieć dodatkowy bufor.
To nie jest taki sam jak nasz sprintf bufor w którym bufor jest jedna
które czytamy w danych z karty dot surowy.
>> Tak więc bufor będzie mieć niepodpisane znaków, które można
w zasadzie tylko traktują nas bajtów, a to będzie od wielkości rozmiaru bloku
gdzie, jak ci powiem, rozmiar bloku jest 512.
Więc JPEG można traktować wszystko jako bloki 512 bajtów.
>> Teraz jedziemy do pętli w całym pliku.
Jedziemy do f przeczytać w naszym buforze pojedynczy razy rozmiar bloku z bajt
Karta dot surowy plik.
Teraz to, co ma f czytaj wrócić?
Zwraca liczbę elementów że z powodzeniem czytać.
Tak więc, jeśli udało mu się przeczytać 512 bajtów, a następnie chcemy, aby zobaczyć, czy jest to
JPEG lub zapisać go do pliku JPEG.
I jeśli nie zwróci 512 bajtów, wówczas plik zakończył się
wówczas będziemy wyrwać się z r pętla, lub są jakieś błędy
W takim przypadku będziemy również przełamać pętla r, ale chcemy, aby to zgłosić
, że coś poszło nie tak.
>> OK.
Tak więc przy założeniu, że udało nam się odczytać w 512 bajtach, chcemy najpierw sprawdzić
zrobić, że te bajty, że tylko czytać rozpocząć JPEG.
Więc jeśli jest JPEG nagłówek naszego bufora.
Teraz to, co robi nagłówek JPEG?
Spójrzmy.
>> Tutaj widzimy, że funkcja ta jest powrót na byka, a byk -
dobrze tutaj, my sprawdzamy, czy Nagłówek zera równa tej stałej i
Nagłówek jeden równa tej stałej i Nagłówek dwa równa tej stałej,
Nagłówek trzy równa się to lub to stała, gdzie są te wszystkie stałe
tylko hash zdefiniowane tu i są dokładnie to, co mówiłem w specyfikacji
że JPEG zaczyna się.
A więc ta funkcja jest po prostu będzie return true jeśli bufor stanowi
Rozpoczęcie nowego JPEG false w przeciwnym wypadku.
>> OK.
Więc jeśli to nie stanowią nowy JPEG, wtedy najpierw chcą sprawdzić, czy
Plik JPEG nie jest równa null, W takim przypadku możemy ją zamknąć.
A więc dlaczego musimy sprawdzić aby sprawdzić, czy to nie jest wartość null?
Bardzo dobrze, że mamy pierwszą JPEG znaleźć nie będziemy już mieć
otwarty plik JPEG.
I tak, jeśli staramy się zamknąć, wtedy nie robimy coś rację.
>> Ale każdy kolejny JPEG że otwieramy chcemy zamknąć
poprzedni plik.
Więc teraz mamy zamiar używać sprintf jak my powiedział przed gdzie używamy
nazwa pliku bufora JPEG.
I będziemy korzystać z pliku JPEG nazwa formatu jak nasz formacie.
A co to jest?
Tutaj widzimy, że jest to procent od zera 3D.JPEG gdzie trzy zero tylko
mówi, że będziemy korzystać z trzech liczb całkowitych za to dopełnione zerami.
Tak to jest jak dostaniemy zero zero one.JPEG i zero 10.JPEG i tak dalej.
>> Zamierzamy użyć sprintf.
I całkowitą, że jesteśmy wstawienie w ciąg jest zdrętwiałe JPEG
odzyskane, który jest początkowo zero.
Więc pierwszy plik będzie otwarty wynosi zero zero zero kropka JPEG.
A potem mamy to tak zwiększany następny plik otwieramy będzie zero zero
jedna kropka JPEG, a my go zwiększyć ponownie, więc to będzie kropka zero zero dwa
JPEG i tak dalej.
>> Dobrze.
Teraz wewnątrz pliku JPEG nazwa, mamy nazwę
plik, który chcemy.
Możemy f otworzyć dany plik na piśmie.
OK.
I po raz kolejny, musimy sprawdzić, Upewnij się, że plik z powodzeniem
otwarte ponieważ jeśli tak nie jest, tam był jakiś błąd.
>> Teraz staliśmy przeszłości jest to część JPEG.
I tutaj widzimy, będziemy do zapisu w formacie JPEG.
Ale najpierw trzeba ten test, który mówi jeśli plik JPEG nie jest równy null.
Po co nam to?
Oraz plik JPEG jest równa wartości null, gdy obecnie mają otwartą JPEG.
>> Co zrobić, jeśli karta zaczyna surowe kropka z kilka bajtów
nie stanowią JPEG?
Wtedy będziemy chcieli pominąć tych bajtów.
Jeśli nie mamy tego wyboru, to jesteśmy zamiar napisać do nieotwarte
plik pierwszych 512 bajtów Karta, która nie jest dobra.
OK.
>> Tak więc zakładając, mamy otwarty plik, a następnie będziemy pisać do tego pliku
512 bajtów, które mamy w naszym buforze.
I po raz kolejny mamy do sprawdzenia upewnić się, że z powodzeniem 512 bajtów
zostały napisane, bo gdyby nie były pomyślnie zapisane, to coś
poszło nie tak.
Będziemy zamykać pliki, drukować, że coś poszło nie tak, i powrót.
Zakładając, że wszystko pójdzie dobrze, to będziemy trzymać zamknięcie pętli
stary plik, otwierając nowy plik, pisanie danych do nowego pliku, a więc
aż wreszcie ten f odczytu zwraca zero, która oznacza
że plik jest zrobione.
>> Więc teraz, że czytanie kart jest ponad, my zobaczyć, że jedziemy do f zamknąć
ostatni plik, który mieliśmy otwarte, ale sprawdzamy, czy plik JPEG
nie równa null.
Oraz f blisko sens, bo jak mamy do otwierania plików, zamykamy
poprzedni plik, ale bardzo ostatnio że otwarty plik nie zostanie zamknięty.
Więc to jest to, co ten robi.
>> Ale dlaczego musimy sprawdzić wartość null?
No i co, jeśli karta nie kropka surowy mają jeden JPEG w jej wnętrzu?
W takim przypadku musielibyśmy nigdy nie otworzył plik.
A jeśli nie możemy otworzyć plik, powinniśmy nie spróbować zamknąć ten plik.
Więc to, co robi ten test.
>> Teraz tutaj, jak powiedziałem wcześniej, moglibyśmy złamał się, że Y pętlę albo jeśli
Karta została zakończona lub istnieją jakiś błąd odczytu z karty.
Więc to jest sprawdzenie, czy nie było błąd odczytu z karty, w
takim przypadku, my nie mówią był błąd odczytu.
Nie chcemy myśleć użytkownika wszystko poszło pomyślnie.
I wrócimy jednego błędu.
>> Wreszcie, my f zamknąć nasz surowy plik, nasza karta kropki surowe, aby wskazać, że
wszystko poszło dobrze i powrót zera i to jest to.
>> Nazywam się Rob i to było odzyskać.
>> [MUZYKA GRA]