[REPRODUCCIÓ DE MÚSICA] ROB Bowden: Hola, sóc Rob, anem a provar això en la grandària. Per tant, estem de nou anem a començar amb bàsicament una còpia de la copy.c, i fer alguns canvis. Nota immediatament veiem un canvi, on en lloc de comprovar per veure si argc no és igual a 3, volem comprovar si argc no és igual a 4, ja que Ara no només estem prenent en un infile i arxiu de sortida, però estem tenint també en n, que és la quantitat que estem escalar la imatge original. Quan estiguem segurs, no podem simplement convertir n en un enter utilitzant atoi. Així que, ara que crearem una mica de àlies, simplement diuen argv 2 infile i argv 3 archivosalida, perquè argv 2 i argv 3 no són noms molt útils. Ara volem comprovar per assegurar-se que n és dins dels límits s'espera, de manera que el spec especifica que si és inferior o igual a zero, o major que 100, llavors això és un factor de canvi de mida no vàlid, i hem d'advertir a l'usuari d'això. Un cop estem més enllà de tot això, podem finalment obrir la nostra infile, i necessitem l'error de comprovació per assegurar-se que el obertura no va fallar per alguna raó. També hem d'obrir el nostre arxiu de sortida, i nou error de comprovació per assegurar-se que no va fallar per alguna raó. Però estar segur de si l'obertura de la archivosalida va fallar que necessitem per tancar el infile, que ja estava oberta. Així, en el cas que no fallen, ; Som - igual que en copy.c-- va a llegir a la capçalera Del infile. Anem a assegurar-se que és un vàlid mapa de bits, però ara farem una mica de les coses una mica diferent. Així que en primer lloc, anem a voler recordar l'amplada i alçada original del infile, perquè anem a estar canviant per a l'arxiu de sortida. Així que ara recordar que per raons estranyes bi.biheight, és negatiu, i per la qual cosa l'altura real, en positiu, volen prendre el valor absolut. Ara, el farciment serà la mateixa càlcul com ho va ser en copy.c, utilitzant l'antic ample, i ara estem en realitat canviarà el que està en la nostra capçalera. Així que anem a multiplicar nostre ample per n, ja que estem escalant l'ample de n, multipliqui l'altura per n, ja que estem escalar per n, i ara tenim el càlcul d'un nou encoixinat basat en el nou ample. Així que ara hem de canviar alguns altres camps de la nostra capçalera. Bi.biSizeImage se suposa que és el La mida de tots els bytes en els píxels i el farciment de la imatge. I el que la mida d'una sola fila de la nostra la imatge és la mida del RGB triple, la mida d'un sol píxel, multiplicat pel nombre de píxels en una fila, més el farciment en al final de la fila. I després anem a multiplicar per valor absolut de la nostra alçada per obtenir el nombre total de bytes en les dades d'imatge. bf.bfSize és només el nombre total de bytes de les dades d'imatge, de manera que bi.biSizeImage, a més de la mida dels nostres capçaleres. Així, l'addició a la mida d'arxiu de mapa de bits encapçalat, i la mida de les dades de mapa de bits encapçalat, OK. Així que això és tot el que necessitem canviar en les nostres capçaleres. Ara anem a escriure la capçalera del fitxer de mapa de bits en el nostre arxiu de sortida, i la nostra informació de mapa de bits capçalera al nostre arxiu de sortida, i ara estem preparats per començar a anar sobre els píxels reals. Així que volem recórrer en iteració línies d'exploració del INFILE. Així que volem recórrer en iteració oldheight. Aquesta és la raó que necessitàvem per recordar la alçada original, abans que ens canviem i escalat per n. Ara llegirem un sol fila de l'infile en un buffer de mida oldwidth. Així que aquí, estem freading mida de RGB triple, un píxel, i l'amplada d'edat de de l'arxiu d'entrada al nostre buffer. I això serà un tot remar en aquesta matriu. Així que ara, volem repetir n vegades per imprimir aquesta fila al nostre arxiu de sortida n vegades. I això és el que aquest bucle està fent. Aquest bucle interior està iterant sobre el fila en si, sobre la matriu, la impressió cada píxel de la matriu de n vegades. De manera que l'element d'ordre zero s'està imprimint n vegades, el primer element està sent imprès n vegades. I això és una espècie de com anem a horitzontalment escala a l'arxiu de sortida, i aquest bucle, ja que estem en bucle n vegades, és la forma en què anem a escala vertical. Aquí sota, veiem que hem d'afegir el farciment al final de cada fila. És per això que això és dins del bucle d' això és imprimir les n files de només aquest fila de la infile. Llavors aquí, vaig a passar per alt el farciment al fitxer d'entrada, ja que un cop hem acabat amb una fila de la infile, no importa Quin va ser el farcit. Només volem arribar a la segona fila. I després anem a bucle de nou i fer tot això de nou per a la segona fila. Finalment, un cop hem acabat amb tot això, podem tancar l'arxiu d'entrada, prop l'arxiu de sortida, i el retorn 0 perquè hem acabat. El meu nom és Rob, i això era de mida. [REPRODUCCIÓ DE MÚSICA]