>> [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]