>> [MUSIC SPIEL]
>> ROB BOWDEN: Hallo, ich bin Rob, wir versuchen, diese für Größe.
Also, wir sind wieder in Gang, mit zu beginnen im Grunde eine Kopie der copy.c und
ein paar Änderungen.
Hinweis sofort sehen wir eine Veränderung, wo anstatt zu überprüfen, ob
argc nicht gleich 3, um zu überprüfen, wollen wir wenn argc nicht gleich 4, da
Jetzt sind wir nicht einfach nur in einer Eingabedatei und Ausgabedatei, aber wir sind auch unter in
n, die Menge, die wir sind ist Skalierung des ursprünglichen Bildes durch.
Sobald wir sicher sind, dass, können wir nur n umwandeln in eine Ganzzahl mit atoi.
>> So, jetzt werden wir einige erstellen Aliase, rufen Sie einfach argv 2 infile und
argv 3 outfile, denn argv 2 und argv 3 sind nicht sehr hilfreich Namen.
Nun, um zu überprüfen, um sicherzustellen, n wollen wir innerhalb der Grenzen zu erwarten, so dass die
Spezifikation legt fest, dass, wenn es kleiner oder gleich Null oder größer als 100,
dann ist das eine ungültige Resize-Faktor, und wir sollten die Benutzer, dass zu warnen.
>> Sobald wir über all das sind, können wir endlich öffnen unsere infile, und wir brauchen
Irrtum überprüfen, um sicherzustellen, dass die Öffnung nicht scheitern aus irgendeinem Grund.
Wir müssen auch unsere Ausgabedatei zu öffnen, und wieder Fehler zu überprüfen, um sicherzustellen, dass
blieb nicht aus irgendeinem Grund.
Aber achten Sie darauf, wenn die Eröffnung des outfile gescheitert, dass wir schließen
die Eingabedatei, die bereits geöffnet wurde.
>> Also, vorausgesetzt, dass nicht scheitern, dann Freundin Höschen - wie in copy.c--
gehen, um in der Kopfzeile zu lesen aus der Eingabedatei.
Wir werden sicherstellen, dass es eine gültige Bitmap, aber jetzt werden wir einige tun
die Dinge ein wenig anders.
Also zuerst, wir gehen zu wollen an die ursprüngliche Breite und Höhe
der Eingabedatei, weil wir zu gehen werden für die Ausgabedatei ändern es.
So, jetzt daran erinnern, dass für die seltsamen Gründen bi.biheight, negativ ist, und
so dass die tatsächliche Höhe in positive, wir wollen, um den absoluten Wert zu nehmen.
>> Nun wird die Polsterung werde gleich sein Berechnung, wie sie in copy.c war,
mit der alten Breite, und jetzt sind wir tatsächlich zu verändern
Was ist in unserem Header.
So werden wir in unseren Breiten multiplizieren n, da wir durch Skalieren der Breite
n, multiplizieren Sie die Höhe durch n, da wir Skalierung von n, und jetzt haben wir
die Berechnung für eine neue Polsterung bezogen auf die neue Breite.
>> So, jetzt, einige müssen wir ändern anderen Bereichen in unserem Header.
Bi.biSizeImage soll das sein Größe aller Bytes in den Pixeln
und Auffüllen des Bildes.
Und so ist die Größe einer einzelnen Reihe unserer Bild ist Größe der RGB-Tripel, die Größe
eines einzelnen Pixels, mal der Anzahl der Pixel in einer Reihe, sowie die Polsterung an
das Ende der Reihe.
Und dann werden wir, dass multiplizieren Absolutwert der Höhe zu erhalten
die Gesamtzahl der Bytes in den Bilddaten.
bf.bfSize ist nur die Gesamtzahl von Bytes in unserer Bilddaten, so
bi.biSizeImage zuzüglich der Größe unserer Header.
Also, das Hinzufügen von der Größe der Bitmap-Datei Kopfzeile, und die Größe der Bitmap-Informationen
Header, OK.
Also das ist alles, was wir brauchen, um ändern in unserem Header.
Jetzt werden wir die Bitmap-Datei-Header zu schreiben unsere outfile und unsere Bitmap-info
header, unsere Ausgabedatei, und jetzt wir sind bereit zu beginnen werde
über den tatsächlichen Pixel.
>> So zu durchlaufen wollen wir Scanzeilen der Eingabedatei ist.
Deshalb wollen wir über oldheight zu durchlaufen.
Deshalb mussten wir daran erinnern, die ursprüngliche Höhe, bevor wir es ändern
und skaliert es durch n.
Jetzt werden wir das Lesen eines einzelnen Zeile der Eingabedatei in eine
Puffer der Größe oldwidth.
Also hier, wir sind freading Größe von RGB Dreibett-, ein Pixel, und der alte Breite
sie aus der Eingabedatei in unsere Puffer.
Und das wird eine ganze sein Zeile in diesem Array.
So, jetzt zu n-mal zu durchlaufen wollen wir drucken Sie diese Zeile, um unsere outfile n-mal.
Und damit ist das, was diese Schleife tut.
Diese innere Schleife über die Iteration Zeile selbst, über die Anordnung, Druck-
jeder Pixel in dem Array n mal.
So dass das nullte Element gedruckt wird n-mal, wobei das erste Element wird
n-mal gedruckt.
Und das ist eine Art, wie wir zu horizontale Skalierung in der Ausgabedatei, und
diese Schleife, da wir Looping n Zeiten, ist, wie wir zu gehen
vertikal Maßstab.
>> Hier unten sehen wir, dass wir brauchen, um hinzuzufügen die Polsterung am Ende jeder Zeile.
Das ist, warum das so ist in der for-Schleife das ist Ausdruck der n Zeilen nur
diese eine Zeile aus der Eingabedatei.
Dann ist hier unten, ich werde überspringen die Polsterung in der Eingabedatei, da einmal
wir mit einer Zeile der getan infile, haben wir nicht zu kümmern
was die Polsterung war.
Wir wollen einfach nur in die zweite Reihe zu bekommen.
Und dann werden wir Schleife zurück und alles tun, Diese Mitteilung für die zweite Reihe.
>> Schließlich, wenn wir mit allem, was getan, können wir die Eingabedatei zu schließen, in der Nähe
der Ausgabedatei und Rück 0, da wir fertig sind.
>> Mein Name ist Rob, und das war Größenänderung.
>> [MUSIC SPIEL]