>> [MUSIQUE JEU]
>> ROB BOWDEN: Salut.
Je suis Rob, et espérons que cette solution vous aide à mettre
sur la voie de la reprise.
Donc, nous allons commencer.
>> Nous voyons que nous sommes immédiatement juste pour s'assurer que nous sommes
utilisant récupérer correctement.
Donc, l'utilisation devrait juste être quelque chose comme slash dot récupérer.
>> Maintenant, nous allons ouvrir le prévu carte dot fichier brut.
Nous voyons ici que nous utilisons la nom de fichier de soulignement première constante,
qui ici nous avons hachage définie comme carte dot brut.
OK.
>> Donc, nous devons faire en sorte que cette ouvert avec succès parce que si elle
n'avons pas, alors nous devrions avertir l'utilisateur.
Mais en supposant qu'il a fait, nous sommes maintenant va déclarer un tampon de taille JPEG
le nom de fichier long.
Donc cela va être le tampon nous allons sprintf en.
>> Alors, quel est le nom de fichier JPEG longueur?
Ici, nous voyons que c'est hachage définie comme huit.
Alors pourquoi huit?
Eh bien un fichier donné sera nommé quelque chose comme zéro zéro zéro.
JPG et nous avons besoin d'une barre oblique inverse zéro.
Nous avons donc besoin d'un tampon qui peut stocker huit caractères.
Maintenant, nous allons avoir un compteur qui est va garder une trace de l'
nombre JPEG nous avons trouvé.
>> Et enfin, nous allons avoir un Fichier JPEG qui est initialement nulle
qui va être le moment fichier ouvert que nous écrivant à.
Maintenant, nous allons avoir un tampon supplémentaire.
Ce n'est pas le même que notre sprintf tampon où ce tampon est une
que nous lisons dans les données de la carte dot brut.
>> Donc, le tampon va être d' caractères non signés, que vous pouvez
essentiellement traiter juste nous octets, et c'est va être d'une taille de bloc de taille
où, comme nous vous le disons, taille de bloc est de 512.
Donc, JPEG, vous pouvez traiter tout sous forme de blocs de 512 octets.
>> Maintenant, nous allons à la boucle sur l'ensemble du dossier.
Nous allons f lire dans notre buffer une seule fois de la taille de bloc d'octets à partir de
la carte dot fichier brut.
Maintenant qu'est-ce que f lu revenir?
Elle renvoie le nombre d'éléments qu'il a lu avec succès.
Donc, si il a réussi à lire 512 octets, alors nous voulons voir s'il s'agissait d'une
JPEG ou écrire dans un fichier JPEG.
Et si elle ne revenait pas 512 octets, alors soit le fichier a terminé en
auquel cas nous allons faire une pause de la y boucle, ou il ya une sorte d'erreur
dans ce cas, nous allons également sortir de la boucle de y, mais nous voulons signaler
que quelque chose n'allait pas.
>> OK.
Donc, en supposant que nous lisons avec succès en 512 octets, nous voulons d'abord vérifier
de faire que ces octets que nous il suffit de lire en commencer une JPEG.
Donc, si c'est en-tête JPEG de notre tampon.
Maintenant ce qu'il est tête JPEG faire?
Voyons.
>> Ici, nous voyons que cette fonction est retour d'un taureau, et le taureau -
bien ici, nous vérifions pour voir si tête zéro égal à cette constante et
tête un égal à cette constante et tête de deux égal à cette constante,
tête à trois est égal à ce ou cette constante où tous ces constantes sont
juste hachage défini ici et sont exactement ce que nous vous avons dit dans la spécification
qu'un JPEG commence par.
Et si cette fonction va juste return true si ce tampon représente
le début d'une nouvelle JPEG et false sinon.
>> OK.
Donc, si cela ne représente une nouvelle JPEG, alors nous voulons d'abord vérifier si
Fichier JPEG n'est pas égale à zéro, dans ce cas, nous fermons.
Et pourquoi avons-nous besoin de vérifier pour voir si elle n'est pas nulle?
Eh bien la première JPEG que nous trouver nous n'aurons pas déjà
un fichier JPEG ouvert.
Et donc, si nous essayons de combler ce, alors nous ne faisons pas quelque chose de tout à fait raison.
>> Mais chaque JPEG ultérieure que nous ouvrons, nous voulons fermer
le fichier précédent.
Alors maintenant, nous allons utiliser sprintf que nous dit avant où nous utilisons la
nom de fichier JPEG tampon.
Et nous allons utiliser un fichier JPEG nommer format que notre forme.
Et qu'est-ce que c'est?
Ici, nous voyons qu'il est zéro pour cent 3D.jpeg où le zéro trois juste
dit que nous allons utiliser trois entiers pour cette complétées par des zéros.
Voilà donc comment nous allons obtenir zéro zéro one.JPEG et 10.jpeg zéro et ainsi de suite.
>> Nous allons utiliser sprintf.
Et le nombre entier que nous insertion dans la chaîne est JPEG engourdis
récupéré, qui est à l'origine zéro.
Ainsi, le premier fichier ouvert se passe à zéro zéro point zéro JPEG.
Et puis nous incrémentation de sorte que le l'image suivante nous ouvrons sera zéro zéro
un point JPEG et nous incrémentons encore si ce sera zéro zéro deux points
JPEG et ainsi de suite.
>> Très bien.
Alors maintenant, l'intérieur du fichier JPEG nom, nous avons le nom de l'
déposons que nous voulons.
Nous pouvons f ouvrir ce fichier pour l'écriture.
OK.
Et encore une fois, nous devons vérifier pour vous Vérifiez que le fichier avec succès
ouvert car si elle n'a pas, alors il y avait une erreur.
>> Alors maintenant, nous avons obtenu le passé est-ce une partie JPEG.
Et ici, nous voyons que nous allons d'écrire sur le JPEG.
Mais nous devons d'abord cette vérification qui dit si le fichier JPEG n'est pas égal à zéro.
Pourquoi avons-nous besoin de cela?
Bien fichier JPEG est égale à zéro lorsque nous ont actuellement un JPEG ouvert.
>> Que faire si la carte commence points premières avec un groupe d'octets
ne représentent pas un JPEG?
Ensuite, nous allons vouloir sauter par-dessus les octets.
Si nous n'avons pas cette vérification, nous sommes va écrire dans un ouvert
déposer les 512 premiers octets de la carte qui n'est pas bon.
OK.
>> Donc, en supposant que nous avons un fichier ouvert, alors nous allons écrire dans ce fichier la
512 octets que nous avons dans notre mémoire tampon.
Et nous sommes encore une fois la vérification pour s'assurer s'assurer que les 512 octets succès
ont été écrit parce que si elles n'étaient pas écrit avec succès, alors quelque chose
qui a mal tourné.
Nous fermons nos fichiers, imprimer que quelque chose s'est mal passé, et retour.
En supposant que tout se passe bien, alors nous allons continuer à boucle de fermeture du
ancien fichier, ouvrir le nouveau fichier, l'écriture données dans le nouveau fichier, et ainsi
jusqu'à ce que finalement, ce f lu renvoie zéro qui aide
que le dossier est fait.
>> Alors, maintenant que la lecture de la carte est terminée, nous voyons que nous allons fermer la f
dernier fichier que nous avions ouvert, mais nous vérifions si le fichier JPEG
n'est pas égal à zéro.
Eh bien la f près de sens parce que nous allons ouvrir des fichiers, on ferme
le fichier précédent, mais la dernière fichier que nous avons ouvert obtient jamais fermé.
C'est ce que ce fait.
>> Mais pourquoi nous devons vérifier pour nulle?
Eh bien si la carte n'a pas de point brut avoir un seul JPEG à l'intérieur de celui-ci?
Dans ce cas, nous aurions jamais ouvert un fichier.
Et si nous n'avons jamais ouvrir un fichier, nous devrions pas essayer de refermer ce dossier.
C'est ce que ce contrôle est fait.
>> Ici, comme je l'ai déjà dit, nous avons pu ont éclaté cette boucle y soit si
la carte est terminé ou si il ya une erreur de lecture de la carte.
Donc vérifie pour voir s'il y avait une erreur de lecture de la carte, dans
auquel cas, nous y disons était une erreur de lecture.
Nous ne voulons pas que l'utilisateur pense tout marche bien.
Et nous reviendrons un droit à l'erreur.
>> Enfin, nous terminons notre f fichier brut, notre carte dot brut, pour indiquer que
tout s'est bien passé et le retour zéro et c'est tout.
>> Mon nom est Rob et c'était récupérer.
>> [MUSIQUE JEU]