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