1 00:00:00,000 --> 00:00:00,996 2 00:00:00,996 --> 00:00:12,470 >> [REPRODUCCIÓ DE MÚSICA] 3 00:00:12,470 --> 00:00:13,210 >> ROB Bowden: Hi. 4 00:00:13,210 --> 00:00:16,870 Sóc Rob i vaig deixar de mida aquest problema. 5 00:00:16,870 --> 00:00:20,990 Així que anem a començar amb copy.c com una plantilla, però nosaltres serem 6 00:00:20,990 --> 00:00:23,340 fer bastants canvis. 7 00:00:23,340 --> 00:00:27,570 >> Ara veiem que estem fent immediatament una canviar el que ja no estem comprovant 8 00:00:27,570 --> 00:00:31,560 per a la nostra RXC no és igual a 3, però ara estem comprovant rc no és igual a 4. 9 00:00:31,560 --> 00:00:34,670 Atès que també volem incloure, en A més dels arxius d'entrada i sortida d'arxius 10 00:00:34,670 --> 00:00:39,550 arguments, f que serà això factor pel qual estem escalar. 11 00:00:39,550 --> 00:00:45,430 >> Així que una vegada que estiguem segurs que volem utilitzar s exploració f per convertir la cadena 12 00:00:45,430 --> 00:00:49,030 argv1 a un flotador. 13 00:00:49,030 --> 00:00:51,330 I anem a emmagatzemar que en el factor. 14 00:00:51,330 --> 00:00:55,180 Aquest caràcter addicional és assegurar que no estem realment entrant 15 00:00:55,180 --> 00:00:59,200 una mena 1.4 ABC en la línia d'ordres. 16 00:00:59,200 --> 00:01:02,960 >> Ara anem a crear alguns àlies des RV2 i RV3 no són 17 00:01:02,960 --> 00:01:04,310 molt útils noms. 18 00:01:04,310 --> 00:01:07,660 Estem, en canvi, va a cridar ells a l'arxiu i sortir de l'arxiu. 19 00:01:07,660 --> 00:01:11,580 Ara anem a fer de el nostre factor era realment vàlida. 20 00:01:11,580 --> 00:01:16,330 Així que si el factor és menor que o igual a zero o més gran que 100, a continuació, com per 21 00:01:16,330 --> 00:01:19,660 l'especificació, s'ha de rebutjar aquest factor. 22 00:01:19,660 --> 00:01:23,890 >> Quan estem segurs que és bo, ara podem obrir l'arxiu n, i hem de fer 23 00:01:23,890 --> 00:01:25,950 assegurar-se que es va obrir amb èxit. 24 00:01:25,950 --> 00:01:28,630 Si no ho fes, que tornarà NULL. 25 00:01:28,630 --> 00:01:30,390 Anem a obrir el fitxer de sortida. 26 00:01:30,390 --> 00:01:33,420 I un cop més, volem comprovar per assegurar segur que ha obert amb èxit. 27 00:01:33,420 --> 00:01:37,270 I si no s'obre correctament, a continuació, també tenim que assegureu-vos de tancar 28 00:01:37,270 --> 00:01:40,870 l'arxiu n que al principi amb èxit obert, o en cas contrari tindrà un 29 00:01:40,870 --> 00:01:42,600 pèrdua de memòria. 30 00:01:42,600 --> 00:01:46,350 >> Així que ara llegirem al mapa de bits capçalera de l'arxiu i la informació de mapa de bits 31 00:01:46,350 --> 00:01:48,890 Rematada de cap de l'arxiu n. 32 00:01:48,890 --> 00:01:52,360 Anem a fer de l' arxiu n era un mapa de bits vàlid. 33 00:01:52,360 --> 00:01:52,640 D'acord. 34 00:01:52,640 --> 00:01:55,100 >> Així que ara anem a començar fer alguns canvis. 35 00:01:55,100 --> 00:01:58,840 Així doncs estarem canviant coses, el primer que volen recordar el 36 00:01:58,840 --> 00:02:01,510 ample antiga de l'arxiu n. 37 00:02:01,510 --> 00:02:05,160 Volem recordar el vell encoixinat de l'arxiu n utilitzant el mateix càlcul 38 00:02:05,160 --> 00:02:06,990 des copy.c. 39 00:02:06,990 --> 00:02:09,840 >> I ara canviarem la capçalera d'informació de mapa de bits. 40 00:02:09,840 --> 00:02:13,630 I pel que estem multiplicant tant l'ample i l'altura pel factor des 41 00:02:13,630 --> 00:02:15,750 això és el que estem per ampliar. 42 00:02:15,750 --> 00:02:18,420 Anem a determinar la nou material de farciment de l'expedient per 43 00:02:18,420 --> 00:02:21,140 utilitzant la nova amplada. 44 00:02:21,140 --> 00:02:27,330 I anem a determinar el nou La mida de la imatge utilitzant el nombre de 45 00:02:27,330 --> 00:02:31,610 bytes en una única fila que es va a ser el nombre de píxels en aquesta fila 46 00:02:31,610 --> 00:02:35,960 vegades la mida d'un píxel, més la nombre de bytes de farciment al final 47 00:02:35,960 --> 00:02:40,310 d'aquesta fila i multiplicar tot el que pel nombre de files que tenim. 48 00:02:40,310 --> 00:02:43,800 Així que aquest és el nombre de bytes que tenim a les nostres dades d'imatge. 49 00:02:43,800 --> 00:02:48,190 >> Bf.Bfsize ara serà el nombre de bytes en la nostra beta imatge més 50 00:02:48,190 --> 00:02:49,350 la mida dels nostres capçaleres. 51 00:02:49,350 --> 00:02:53,910 Així, més grandària de capçalera d'arxiu de mapa de bits i la mida de la capçalera d'informació de mapa de bits. 52 00:02:53,910 --> 00:02:54,510 D'acord. 53 00:02:54,510 --> 00:02:56,440 Així que això és tot per les nostres capçaleres. 54 00:02:56,440 --> 00:02:59,030 Podem escriure la capçalera del fitxer i informació de la capçalera de la nostra sortida 55 00:02:59,030 --> 00:03:01,590 arxiu, i estem bé. 56 00:03:01,590 --> 00:03:03,800 >> Ara és el moment per realment començar escriure el píxel 57 00:03:03,800 --> 00:03:05,120 les dades a l'arxiu de sortida. 58 00:03:05,120 --> 00:03:10,460 Anem a declarar un buffer de mida vella ample RGB triplica, i estem 59 00:03:10,460 --> 00:03:13,790 va a declarar una variable anomenada fila adormida, que és que anem a 60 00:03:13,790 --> 00:03:15,640 establert inicialment igual a la negativa gener. 61 00:03:15,640 --> 00:03:19,090 Anem a veure que estarem usant que per tal de fer un seguiment del que 62 00:03:19,090 --> 00:03:22,640 fila que hem carregat en aquest moment en aquest tampó. 63 00:03:22,640 --> 00:03:23,290 D'acord. 64 00:03:23,290 --> 00:03:28,750 >> Així que ara a diferència de l'edició estàndard, en lloc de recórrer a iteració en l'en 65 00:03:28,750 --> 00:03:32,900 arxiu, anem a iterar sobre cada fila a l'arxiu i esbrinar 66 00:03:32,900 --> 00:03:38,130 quina fila a l'arxiu en què volem col · locar en aquesta fila a l'arxiu de sortida. 67 00:03:38,130 --> 00:03:44,930 Així iteració en totes les files de la sortida fitxer fent servir la nova alçada, som els primers 68 00:03:44,930 --> 00:03:48,890 determinarà la fila a l'antiga arxivem que utilitzarem, el que estem 69 00:03:48,890 --> 00:03:53,560 farem mitjançant l'adopció d'aquest corrent fila dividit pel factor. 70 00:03:53,560 --> 00:03:58,000 Així que això ens donarà la fila a l'arxiu antic que volem. 71 00:03:58,000 --> 00:04:03,310 >> Així que ara si la fila entumida no és igual edat i, anem a haver de llegir la fila 72 00:04:03,310 --> 00:04:05,940 que volem al nostre buffer fila actual. 73 00:04:05,940 --> 00:04:07,700 Llavors, com farem això? 74 00:04:07,700 --> 00:04:11,650 En primer lloc, anem a esbrinar la posició que comença aquesta fila al 75 00:04:11,650 --> 00:04:13,100 arxiu original. 76 00:04:13,100 --> 00:04:18,630 Així que aquesta posició serà més enllà de totes les nostres capçaleres i 77 00:04:18,630 --> 00:04:21,589 Ara passats files antigues i. 78 00:04:21,589 --> 00:04:23,880 >> I així, la quantitat de bytes es troben en una sola fila? 79 00:04:23,880 --> 00:04:28,740 Un cop més, la mida de RGB vegades triples d'edat ample, més vell farcit, així que aquesta és la 80 00:04:28,740 --> 00:04:30,640 nombre de bytes en una sola fila. 81 00:04:30,640 --> 00:04:33,680 I volem saltar últimes files antigues i. 82 00:04:33,680 --> 00:04:37,580 Així que anem a buscar f i estem utilitzant busqui conjunt a partir de la 83 00:04:37,580 --> 00:04:39,100 a partir d'un arxiu. 84 00:04:39,100 --> 00:04:42,740 Anem a tractar de f aquesta posició a l'arxiu, el que ens situa en el 85 00:04:42,740 --> 00:04:46,500 a partir de la fila que volem llegir en el nostre buffer. 86 00:04:46,500 --> 00:04:48,510 >> Anem a establir fila numb igual edat i. 87 00:04:48,510 --> 00:04:53,080 Així que ara si que tornar bucle i volem utilitzar aquesta mateixa fila en el nostre fitxer a terme, 88 00:04:53,080 --> 00:04:55,970 llavors no anem a llegir en comptes innecessàriament. 89 00:04:55,970 --> 00:04:59,310 Així que en realitat, la fila és insensible només una optimització. 90 00:04:59,310 --> 00:05:05,500 >> Finalment, anem a llegir en el fila actual l'antic ample RGB triplica 91 00:05:05,500 --> 00:05:08,040 que volem des de l'arxiu original. 92 00:05:08,040 --> 00:05:12,270 Així que ara act fila conté els píxels de l'arxiu original que volem 93 00:05:12,270 --> 00:05:14,200 escriure a l'arxiu de sortida. 94 00:05:14,200 --> 00:05:18,960 Així que ara, igual que abans, en lloc de iteració a l'arxiu antic, necessitem 95 00:05:18,960 --> 00:05:22,560 per iterar sobre les noves files arxius. 96 00:05:22,560 --> 00:05:27,450 Doncs aquí, en lloc de iterar sobre tots dels vells píxels que a la fila actual, 97 00:05:27,450 --> 00:05:31,210 volem iterar sobre tots els píxels en el nostre nou arxiu en aquest 98 00:05:31,210 --> 00:05:32,480 en particular fila. 99 00:05:32,480 --> 00:05:34,140 >> Per què volem fer això? 100 00:05:34,140 --> 00:05:38,960 Perquè veiem aquí que no estem en realitat necessàriament l'ús de tots els 101 00:05:38,960 --> 00:05:41,020 píxels al fitxer original. 102 00:05:41,020 --> 00:05:46,630 Perquè si estem disminuint, podríem realment vulgui saltar-se els píxels. 103 00:05:46,630 --> 00:05:48,090 I veiem que això - 104 00:05:48,090 --> 00:05:49,690 x dividit pel factor - 105 00:05:49,690 --> 00:05:55,620 estretament reflecteix aquí on diem i dividit pel factor d'esbrinar que 106 00:05:55,620 --> 00:06:02,480 la vella fila-i th correspon a la fila-i XX en aquest nou arxiu. 107 00:06:02,480 --> 00:06:05,880 >> Ara anem a escriure tots aquests píxels de la fila edat 108 00:06:05,880 --> 00:06:07,440 en la nostra nova fila. 109 00:06:07,440 --> 00:06:10,890 Quan hem fet això, hem de només posar el farciment al final de la nostra fila 110 00:06:10,890 --> 00:06:15,540 I anem a bucle i continuar durant totes les files al nostre nou arxiu. 111 00:06:15,540 --> 00:06:19,390 Al final, hem de tancar el nostre vell presentar, tancar el nostre nou arxiu, i el retorn 112 00:06:19,390 --> 00:06:21,540 zero perquè tot va sortir bé. 113 00:06:21,540 --> 00:06:24,220 >> El meu nom és Rob i això va ser Recess. 114 00:06:24,220 --> 00:06:29,184 >> [REPRODUCCIÓ DE MÚSICA]