>> [MUSIQUE JEU]
>> ROB BOWDEN: Salut.
Je suis Rob et laisse sa taille de ce problème.
Nous allons donc commencer par copy.c comme un modèle, mais nous allons être
faire quelques changements.
>> Maintenant, nous voyons que nous immédiatement à faire changer l'endroit où nous ne sommes plus le contrôle
pour notre RXC ne correspond pas 3, mais maintenant nous vérifions rc n'est pas égale à 4.
Puisque nous voulons aussi inclure, dans Outre les fichiers dans le dossier et sur
arguments, f qui va être ce facteur par lequel nous sommes échelle.
>> Donc, une fois que nous sommes sûrs de ce que nous voulons utiliser de balayage f pour convertir la chaîne
argv1 à un flotteur.
Et nous allons stocker ce facteur dans.
Ce caractère supplémentaire est de s'assurer que nous ne sommes pas réellement entrons
quelque chose comme 1,4 ABC à la ligne de commande.
>> Maintenant, nous allons créer des alias depuis RV2 et RV3 sont pas
noms très utiles.
Nous, au contraire, va appeler les dans le fichier et sur dossier.
Maintenant, nous allons faire en sorte que notre facteur était en fait valable.
Donc, si le facteur est inférieur ou égal à zéro ou supérieur à 100, alors que par
la spécification, nous devrions rejeter ce facteur.
>> Lorsque nous sommes sûrs que c'est bon, maintenant nous pouvons ouvrir le fichier n, et nous devons faire
vous qu'il a été ouvert avec succès.
Si elle n'a pas, qui va retourner null.
Nous allons ouvrir le fichier sur.
Et encore une fois, nous voulons vérifiez vous qu'il est ouvert avec succès.
Et si elle n'a pas ouvert avec succès, nous avons aussi besoin d'être sûr de fermer
le fichier n qui à l'origine succès ouvert, ou bien nous avons un
fuite de mémoire.
>> Alors maintenant, nous allons lire dans le bitmap tête de fichier et les informations de bitmap
header du fichier de n.
Nous allons faire en sorte que la fichier n était un bitmap valide.
OK.
>> Alors maintenant, nous allons commencer faire quelques changements.
Donc, parce que nous allons changer choses, nous voulons d'abord rappeler le
vieux largeur du fichier de n.
Nous voulons nous souvenir de l'ancien rembourrage le fichier n en utilisant le même calcul
de copy.c.
>> Et maintenant, nous allons changer les informations en-tête bitmap.
Et si nous multipliant à la fois la largeur et la hauteur de facteur depuis
c'est ce que nous sommes par l'extension.
Nous allons déterminer la nouveau rembourrage du dossier par
en utilisant la nouvelle largeur.
Et nous allons déterminer la nouvelle la taille de l'image en utilisant le nombre d'
octets en une seule rangée qui va le nombre de pixels de cette ligne
fois la taille d'un pixel plus l' nombre d'octets de remplissage à la fin
de cette ligne, et en multipliant tout ce qui par le nombre de lignes que nous avons.
Donc, c'est le nombre d'octets nous avons dans nos données d'image.
>> Bf.Bfsize maintenant va être le nombre d'octets à notre image bêta plus
la taille de nos têtes.
Donc, plus la taille de l'entête du fichier bitmap et la taille des informations bitmap tête.
OK.
Voilà donc pour nos têtes.
Nous pouvons écrire la tête de fichier et Info tête à notre savoir
fichier, et nous sommes bons.
>> Maintenant il est temps de réellement commencer l'écriture du pixel
données dans le fichier de départ.
Nous allons déclarer un tampon de taille vieux largeur RVB triple, et nous sommes
va déclarer une variable appelée rangée engourdi, qui est que nous allons
initialement fixé égal à 1 négative.
Nous allons voir que nous allons être en utilisant que, afin de garder une trace de ce
consécutive, nous avons actuellement chargé dans ce tampon.
OK.
>> Alors maintenant, contrairement à l'édition standard, à la place de l'itération sur le dans
fichier, nous allons parcourir chaque ligne dans le fichier sur et comprendre
quelle ligne dans le fichier en nous voulons placer dans cette ligne dans le fichier sur.
Donc itération sur toutes les lignes de la rupture fichier en utilisant la nouvelle hauteur, nous sommes les premiers
va déterminer la ligne de l'ancien déposons nous allons utiliser, qui nous sommes
va faire en prenant ce courant rangée divisée par le facteur.
Donc, cela va nous donner la ligne dans l'ancien fichier que nous voulons.
>> Alors maintenant, si engourdi ligne n'est pas égal vieux y, nous allons avoir à lire la ligne
que nous voulons dans notre buffer d'une ligne de courant.
Alors, comment allons-nous faire?
Tout d'abord, nous allons comprendre la position qui commence cette ligne dans la
fichier original.
De sorte que la position va être passé l'ensemble de nos têtes et
maintenant passées anciennes lignes y.
>> Et combien d'octets sont sur une seule ligne?
Encore une fois, la taille de RVB fois triple vieux largeur, plus vieux rembourrage, de sorte que c'est la
nombre d'octets dans une seule ligne.
Et nous voulons aller dernières lignes anciennes y.
Nous allons donc f chercher et nous sommes aide chercher ensemble à partir de la
à partir d'un fichier.
Nous allons f cherchent à ce poste dans le fichier, nous mettant à la
au début de la ligne que nous voulons à lire dans notre mémoire tampon.
>> Nous allons mettre en ligne engourdi égale à l'ancienne y.
Alors maintenant, si on boucle arrière et nous voulons utiliser cette même ligne dans notre dossier sur,
alors nous n'allons pas à lire le à nouveau inutilement.
Alors, vraiment, rangée engourdi est seulement une optimisation.
>> Enfin, nous allons lire dans le ligne actuelle de la vieille largeur RVB triple
que nous voulons partir du fichier original.
Alors maintenant, actuelle ligne contient les pixels de le fichier d'origine que nous voulons
écrire dans le fichier de sur.
Alors maintenant, tout comme ci-dessus, au lieu de itération sur l'ancien fichier, nous devons
à itérer sur les nouveaux fichiers rangées.
Eh bien ici, au lieu de l'itération sur tous des vieux pixels que la ligne actuelle,
nous voulons parcourir la totalité de la pixels dans notre nouveau fichier dans ce
notamment rangée.
>> Pourquoi voulons-nous faire?
Parce que nous voyons ici que nous ne sommes pas en fait nécessairement utiliser la totalité de la
pixels dans le fichier original.
Parce que si nous diminue, nous pourrions voulez vraiment aller les pixels.
Et nous voyons que cette -
x divisé par le facteur -
reflète étroitement ici où nous disons y divisé par le facteur de comprendre que
l'ancienne ligne y-e correspond à la ligne y-e dans ce nouveau fichier.
>> Maintenant, nous allons écrire tous ces pixels de l'ancienne ligne
dans notre nouvelle ligne.
Une fois que nous l'avons fait, nous devons juste mettre le rembourrage à la fin de notre ligne
et nous allons revenir en arrière pour continuer à toutes les lignes de notre nouveau fichier.
A la fin, nous devons fermer notre ancien déposer, fermer notre nouveau fichier, et retour
zéro parce que tout s'est bien passé.
>> Mon nom est Rob et c'était Recess.
>> [MUSIQUE JEU]