[GIOCO MUSICA] ROB BOWDEN: Ciao. Sono Rob e cerchiamo di dimensioni su questo problema. Quindi stiamo per iniziare con copy.c come un modello, ma stiamo andando a essere fare alcuni cambiamenti. Ora vediamo che stiamo facendo subito una cambiare dove stiamo più controllo per il nostro RXC non è uguale a 3, ma ora stiamo controllando rc non è uguale a 4. Poiché vogliamo anche includere, in Oltre ai file di in e out file argomenti, f che sta per essere questo fattore per il quale stiamo scala. Così una volta siamo sicuri di questo, vogliamo usare s scan f per convertire la stringa argv1 ad un galleggiante. E noi andremo a memorizzare che in fattore. Questo carattere aggiuntivo è fare in modo che non stiamo realmente entrando qualcosa come 1.4 ABC nella riga di comando. Ora stiamo andando a creare alcuni alias poiché RV2 e RV3 non sono molto utile nomi. Siamo, invece, di andare a chiamare li in un file e fuori file. Ora stiamo andando a fare in modo che il nostro fattore era in realtà valida. Quindi, se il fattore è inferiore o uguale a zero o maggiore di 100, come da le specifiche, dovrebbe respingere tale fattore. Quando siamo sicuri che è buono, ora possiamo aprire il file n, e dobbiamo fare certo che è stato aperto con successo. Se non lo ha fatto, che restituirà null. Stiamo per aprire il file fuori. E ancora, vogliamo controllare per assicurarsi che sia aperto con successo. E se non si è aperta con successo, allora abbiamo anche bisogno di essere sicuri di chiudere il file n originariamente successo aperto, oppure abbiamo un perdita di memoria. Così ora stiamo andando a leggere in bitmap intestazione del file e le informazioni bitmap intestazione dal file n. Stiamo andando a fare in modo che il il file n era un bitmap valido. OK. Così ora stiamo per iniziare a fare alcuni cambiamenti. Quindi perché stiamo andando a cambiare cose, in primo luogo vogliono ricordare il vecchio larghezza del file n. Vogliamo ricordare il vecchio imbottitura il file n utilizzando lo stesso calcolo da copy.c. E ora stiamo andando a cambiare le informazioni di intestazione bitmap. E così stiamo moltiplicando sia la larghezza e l'altezza dal fattore che è quello che stiamo scala da. Stiamo andando a determinare il nuova imbottitura del file utilizzando la nuova larghezza. E stiamo andando a determinare il nuovo dimensioni dell'immagine utilizzando il numero di byte in una singola riga che sta per il numero di pixel in quella riga volte la dimensione di un pixel più l' numero di byte di riempimento alla fine di tale riga, e moltiplicando tutto ciò per il numero di righe che abbiamo. Ecco, questo è il numero di byte abbiamo nei nostri dati di immagine. Bf.Bfsize ora sta per essere il numero di byte nel nostro beta immagine più la dimensione dei nostri intestazioni. Quindi, più il formato del file di intestazione bitmap e le dimensioni del bitmap informazioni di intestazione. OK. Ecco, questo è per i nostri intestazioni. Possiamo scrivere la testa di file e Info intestazione al nostro out File e siamo a posto. Ora è il momento di iniziare effettivamente scrivere il pixel dati al file fuori. Stiamo andando a dichiarare un buffer di dimensioni vecchio larghezza RGB triplica, e siamo andando a dichiarare una variabile chiamata intorpidito fila, che è andremo a inizialmente fissata pari a negativo 1. Vedremo che stiamo andando a utilizzare che, per tenere traccia di quello fila attualmente abbiamo caricato in questo buffer. OK. Così ora a differenza della versione standard, invece di iterare su al di di file, stiamo andando a iterare ogni riga del file fuori e capire che riga del file in vogliamo collocare in questa riga nel file fuori. Così l'iterazione di tutte le righe in out il file utilizzando la nuova altezza, siamo i primi andando a determinare la riga nella vecchia file che andremo a utilizzare, che siamo intenzione di fare prendendo questa corrente fila diviso per il fattore. Così che sta per darci la riga nel vecchio file che vogliamo. Così ora se fila insensibile non è uguale vecchia y, stiamo andando ad avere per leggere la riga che vogliamo nel nostro buffer di riga corrente. Quindi, come facciamo a fare questo? In primo luogo, stiamo andando a capire il posizione che comincia quella riga nella file originale. Cosicché la posizione sarà passato, tutti i nostri intestazioni e ora passato vecchi filari y. E così il numero di byte sono in una singola riga? Ancora una volta, la dimensione di RGB tempi triple vecchio larghezza più vecchio imbottitura, in modo che l' numero di byte in una singola riga. E vogliamo ignorare passato vecchi righe y. Quindi stiamo andando a cercare f e siamo utilizzando cercare insieme a partire dalla inizio di un file. Stiamo andando a cercare f a questa posizione nel file, che ci mette al all'inizio della riga vogliamo leggere nella nostra buffer. Stiamo andando a impostare fila insensibile pari a vecchia y. Così ora se ci loop back e vogliamo utilizzare questa stessa riga nel nostro file fuori, allora non stiamo andando a leggere nel nuovo inutilmente. Quindi, in realtà, fila è intorpidito solo una ottimizzazione. Infine, stiamo andando a leggere in riga corrente il vecchio larghezza RGB triplica che vogliamo dal file originale. Così ora cur riga contiene i pixel da il file originale che vogliamo scrivere nel file fuori. Così ora, proprio come sopra, invece di iterare su il vecchio file, abbiamo bisogno di per iterare attraverso i nuovi file righe. Bene, qui, invece di iterare su tutti dei vecchi pixel nella riga corrente, vogliamo per scorrere tutte le pixel nel nostro nuovo file in questo particolare riga. Perché vogliamo farlo? Perché vediamo qui che non siamo effettivamente necessariamente utilizzando tutto lo pixel nel file originale. Perché se stiamo contrazione, potremmo in realtà vuole ignorare i pixel. E vediamo che questo - x diviso per il fattore - specchi strettamente quassù dove diciamo y diviso per il fattore di capire che la vecchia riga y-esima corrisponde la riga y-esimo in questo nuovo file. Ora andremo a scrivere tutti questi pixel dal vecchio fila nella nostra nuova riga. Una volta che abbiamo fatto, dobbiamo solo mettere l'imbottitura alla fine della nostra fila e faremo ciclo indietro e proseguire per tutte le righe del nostro nuovo file. Alla fine, abbiamo bisogno di chiudere il nostro vecchio file, chiudere il nostro nuovo file, e ritorno zero perché tutto è andato bene. Il mio nome è Rob e questo era Recess. [GIOCO MUSICA]