1 00:00:00,000 --> 00:00:00,996 2 00:00:00,996 --> 00:00:12,470 >> [MUSIQUE JEU] 3 00:00:12,470 --> 00:00:13,210 >> ROB BOWDEN: Salut. 4 00:00:13,210 --> 00:00:16,870 Je suis Rob et laisse sa taille de ce problème. 5 00:00:16,870 --> 00:00:20,990 Nous allons donc commencer par copy.c comme un modèle, mais nous allons être 6 00:00:20,990 --> 00:00:23,340 faire quelques changements. 7 00:00:23,340 --> 00:00:27,570 >> Maintenant, nous voyons que nous immédiatement à faire changer l'endroit où nous ne sommes plus le contrôle 8 00:00:27,570 --> 00:00:31,560 pour notre RXC ne correspond pas 3, mais maintenant nous vérifions rc n'est pas égale à 4. 9 00:00:31,560 --> 00:00:34,670 Puisque nous voulons aussi inclure, dans Outre les fichiers dans le dossier et sur 10 00:00:34,670 --> 00:00:39,550 arguments, f qui va être ce facteur par lequel nous sommes échelle. 11 00:00:39,550 --> 00:00:45,430 >> Donc, une fois que nous sommes sûrs de ce que nous voulons utiliser de balayage f pour convertir la chaîne 12 00:00:45,430 --> 00:00:49,030 argv1 à un flotteur. 13 00:00:49,030 --> 00:00:51,330 Et nous allons stocker ce facteur dans. 14 00:00:51,330 --> 00:00:55,180 Ce caractère supplémentaire est de s'assurer que nous ne sommes pas réellement entrons 15 00:00:55,180 --> 00:00:59,200 quelque chose comme 1,4 ABC à la ligne de commande. 16 00:00:59,200 --> 00:01:02,960 >> Maintenant, nous allons créer des alias depuis RV2 et RV3 sont pas 17 00:01:02,960 --> 00:01:04,310 noms très utiles. 18 00:01:04,310 --> 00:01:07,660 Nous, au contraire, va appeler les dans le fichier et sur dossier. 19 00:01:07,660 --> 00:01:11,580 Maintenant, nous allons faire en sorte que notre facteur était en fait valable. 20 00:01:11,580 --> 00:01:16,330 Donc, si le facteur est inférieur ou égal à zéro ou supérieur à 100, alors que par 21 00:01:16,330 --> 00:01:19,660 la spécification, nous devrions rejeter ce facteur. 22 00:01:19,660 --> 00:01:23,890 >> Lorsque nous sommes sûrs que c'est bon, maintenant nous pouvons ouvrir le fichier n, et nous devons faire 23 00:01:23,890 --> 00:01:25,950 vous qu'il a été ouvert avec succès. 24 00:01:25,950 --> 00:01:28,630 Si elle n'a pas, qui va retourner null. 25 00:01:28,630 --> 00:01:30,390 Nous allons ouvrir le fichier sur. 26 00:01:30,390 --> 00:01:33,420 Et encore une fois, nous voulons vérifiez vous qu'il est ouvert avec succès. 27 00:01:33,420 --> 00:01:37,270 Et si elle n'a pas ouvert avec succès, nous avons aussi besoin d'être sûr de fermer 28 00:01:37,270 --> 00:01:40,870 le fichier n qui à l'origine succès ouvert, ou bien nous avons un 29 00:01:40,870 --> 00:01:42,600 fuite de mémoire. 30 00:01:42,600 --> 00:01:46,350 >> Alors maintenant, nous allons lire dans le bitmap tête de fichier et les informations de bitmap 31 00:01:46,350 --> 00:01:48,890 header du fichier de n. 32 00:01:48,890 --> 00:01:52,360 Nous allons faire en sorte que la fichier n était un bitmap valide. 33 00:01:52,360 --> 00:01:52,640 OK. 34 00:01:52,640 --> 00:01:55,100 >> Alors maintenant, nous allons commencer faire quelques changements. 35 00:01:55,100 --> 00:01:58,840 Donc, parce que nous allons changer choses, nous voulons d'abord rappeler le 36 00:01:58,840 --> 00:02:01,510 vieux largeur du fichier de n. 37 00:02:01,510 --> 00:02:05,160 Nous voulons nous souvenir de l'ancien rembourrage le fichier n en utilisant le même calcul 38 00:02:05,160 --> 00:02:06,990 de copy.c. 39 00:02:06,990 --> 00:02:09,840 >> Et maintenant, nous allons changer les informations en-tête bitmap. 40 00:02:09,840 --> 00:02:13,630 Et si nous multipliant à la fois la largeur et la hauteur de facteur depuis 41 00:02:13,630 --> 00:02:15,750 c'est ce que nous sommes par l'extension. 42 00:02:15,750 --> 00:02:18,420 Nous allons déterminer la nouveau rembourrage du dossier par 43 00:02:18,420 --> 00:02:21,140 en utilisant la nouvelle largeur. 44 00:02:21,140 --> 00:02:27,330 Et nous allons déterminer la nouvelle la taille de l'image en utilisant le nombre d' 45 00:02:27,330 --> 00:02:31,610 octets en une seule rangée qui va le nombre de pixels de cette ligne 46 00:02:31,610 --> 00:02:35,960 fois la taille d'un pixel plus l' nombre d'octets de remplissage à la fin 47 00:02:35,960 --> 00:02:40,310 de cette ligne, et en multipliant tout ce qui par le nombre de lignes que nous avons. 48 00:02:40,310 --> 00:02:43,800 Donc, c'est le nombre d'octets nous avons dans nos données d'image. 49 00:02:43,800 --> 00:02:48,190 >> Bf.Bfsize maintenant va être le nombre d'octets à notre image bêta plus 50 00:02:48,190 --> 00:02:49,350 la taille de nos têtes. 51 00:02:49,350 --> 00:02:53,910 Donc, plus la taille de l'entête du fichier bitmap et la taille des informations bitmap tête. 52 00:02:53,910 --> 00:02:54,510 OK. 53 00:02:54,510 --> 00:02:56,440 Voilà donc pour nos têtes. 54 00:02:56,440 --> 00:02:59,030 Nous pouvons écrire la tête de fichier et Info tête à notre savoir 55 00:02:59,030 --> 00:03:01,590 fichier, et nous sommes bons. 56 00:03:01,590 --> 00:03:03,800 >> Maintenant il est temps de réellement commencer l'écriture du pixel 57 00:03:03,800 --> 00:03:05,120 données dans le fichier de départ. 58 00:03:05,120 --> 00:03:10,460 Nous allons déclarer un tampon de taille vieux largeur RVB triple, et nous sommes 59 00:03:10,460 --> 00:03:13,790 va déclarer une variable appelée rangée engourdi, qui est que nous allons 60 00:03:13,790 --> 00:03:15,640 initialement fixé égal à 1 négative. 61 00:03:15,640 --> 00:03:19,090 Nous allons voir que nous allons être en utilisant que, afin de garder une trace de ce 62 00:03:19,090 --> 00:03:22,640 consécutive, nous avons actuellement chargé dans ce tampon. 63 00:03:22,640 --> 00:03:23,290 OK. 64 00:03:23,290 --> 00:03:28,750 >> Alors maintenant, contrairement à l'édition standard, à la place de l'itération sur le dans 65 00:03:28,750 --> 00:03:32,900 fichier, nous allons parcourir chaque ligne dans le fichier sur et comprendre 66 00:03:32,900 --> 00:03:38,130 quelle ligne dans le fichier en nous voulons placer dans cette ligne dans le fichier sur. 67 00:03:38,130 --> 00:03:44,930 Donc itération sur toutes les lignes de la rupture fichier en utilisant la nouvelle hauteur, nous sommes les premiers 68 00:03:44,930 --> 00:03:48,890 va déterminer la ligne de l'ancien déposons nous allons utiliser, qui nous sommes 69 00:03:48,890 --> 00:03:53,560 va faire en prenant ce courant rangée divisée par le facteur. 70 00:03:53,560 --> 00:03:58,000 Donc, cela va nous donner la ligne dans l'ancien fichier que nous voulons. 71 00:03:58,000 --> 00:04:03,310 >> Alors maintenant, si engourdi ligne n'est pas égal vieux y, nous allons avoir à lire la ligne 72 00:04:03,310 --> 00:04:05,940 que nous voulons dans notre buffer d'une ligne de courant. 73 00:04:05,940 --> 00:04:07,700 Alors, comment allons-nous faire? 74 00:04:07,700 --> 00:04:11,650 Tout d'abord, nous allons comprendre la position qui commence cette ligne dans la 75 00:04:11,650 --> 00:04:13,100 fichier original. 76 00:04:13,100 --> 00:04:18,630 De sorte que la position va être passé l'ensemble de nos têtes et 77 00:04:18,630 --> 00:04:21,589 maintenant passées anciennes lignes y. 78 00:04:21,589 --> 00:04:23,880 >> Et combien d'octets sont sur une seule ligne? 79 00:04:23,880 --> 00:04:28,740 Encore une fois, la taille de RVB fois triple vieux largeur, plus vieux rembourrage, de sorte que c'est la 80 00:04:28,740 --> 00:04:30,640 nombre d'octets dans une seule ligne. 81 00:04:30,640 --> 00:04:33,680 Et nous voulons aller dernières lignes anciennes y. 82 00:04:33,680 --> 00:04:37,580 Nous allons donc f chercher et nous sommes aide chercher ensemble à partir de la 83 00:04:37,580 --> 00:04:39,100 à partir d'un fichier. 84 00:04:39,100 --> 00:04:42,740 Nous allons f cherchent à ce poste dans le fichier, nous mettant à la 85 00:04:42,740 --> 00:04:46,500 au début de la ligne que nous voulons à lire dans notre mémoire tampon. 86 00:04:46,500 --> 00:04:48,510 >> Nous allons mettre en ligne engourdi égale à l'ancienne y. 87 00:04:48,510 --> 00:04:53,080 Alors maintenant, si on boucle arrière et nous voulons utiliser cette même ligne dans notre dossier sur, 88 00:04:53,080 --> 00:04:55,970 alors nous n'allons pas à lire le à nouveau inutilement. 89 00:04:55,970 --> 00:04:59,310 Alors, vraiment, rangée engourdi est seulement une optimisation. 90 00:04:59,310 --> 00:05:05,500 >> Enfin, nous allons lire dans le ligne actuelle de la vieille largeur RVB triple 91 00:05:05,500 --> 00:05:08,040 que nous voulons partir du fichier original. 92 00:05:08,040 --> 00:05:12,270 Alors maintenant, actuelle ligne contient les pixels de le fichier d'origine que nous voulons 93 00:05:12,270 --> 00:05:14,200 écrire dans le fichier de sur. 94 00:05:14,200 --> 00:05:18,960 Alors maintenant, tout comme ci-dessus, au lieu de itération sur l'ancien fichier, nous devons 95 00:05:18,960 --> 00:05:22,560 à itérer sur les nouveaux fichiers rangées. 96 00:05:22,560 --> 00:05:27,450 Eh bien ici, au lieu de l'itération sur tous des vieux pixels que la ligne actuelle, 97 00:05:27,450 --> 00:05:31,210 nous voulons parcourir la totalité de la pixels dans notre nouveau fichier dans ce 98 00:05:31,210 --> 00:05:32,480 notamment rangée. 99 00:05:32,480 --> 00:05:34,140 >> Pourquoi voulons-nous faire? 100 00:05:34,140 --> 00:05:38,960 Parce que nous voyons ici que nous ne sommes pas en fait nécessairement utiliser la totalité de la 101 00:05:38,960 --> 00:05:41,020 pixels dans le fichier original. 102 00:05:41,020 --> 00:05:46,630 Parce que si nous diminue, nous pourrions voulez vraiment aller les pixels. 103 00:05:46,630 --> 00:05:48,090 Et nous voyons que cette - 104 00:05:48,090 --> 00:05:49,690 x divisé par le facteur - 105 00:05:49,690 --> 00:05:55,620 reflète étroitement ici où nous disons y divisé par le facteur de comprendre que 106 00:05:55,620 --> 00:06:02,480 l'ancienne ligne y-e correspond à la ligne y-e dans ce nouveau fichier. 107 00:06:02,480 --> 00:06:05,880 >> Maintenant, nous allons écrire tous ces pixels de l'ancienne ligne 108 00:06:05,880 --> 00:06:07,440 dans notre nouvelle ligne. 109 00:06:07,440 --> 00:06:10,890 Une fois que nous l'avons fait, nous devons juste mettre le rembourrage à la fin de notre ligne 110 00:06:10,890 --> 00:06:15,540 et nous allons revenir en arrière pour continuer à toutes les lignes de notre nouveau fichier. 111 00:06:15,540 --> 00:06:19,390 A la fin, nous devons fermer notre ancien déposer, fermer notre nouveau fichier, et retour 112 00:06:19,390 --> 00:06:21,540 zéro parce que tout s'est bien passé. 113 00:06:21,540 --> 00:06:24,220 >> Mon nom est Rob et c'était Recess. 114 00:06:24,220 --> 00:06:29,184 >> [MUSIQUE JEU]