[MUSIC SPIEL] ROB BOWDEN: Hallo. Ich bin Rob und lassen Größe bis dieses Problem. So werden wir mit copy.c als Start eine Vorlage, aber wir werden sein macht durchaus ein paar Änderungen. Jetzt sehen wir, dass wir sofort ein ändern, wo wir nicht mehr prüfen unserer RXC nicht gleich 3 ist, aber jetzt Wir prüfen rc nicht gleich vier. Da wollen wir auch gehören, in Zusätzlich zu den in der Datei und aus Dateien Argumente, f die gehen, um dies Faktor, mit dem wir die Skalierung. Also, wenn wir sicher sind, dass wir wollen s Scan verwenden f, um die Zeichenfolge zu konvertieren argv1 mit einem Schwimmer. Und wir werden zu speichern dass in Faktor. Diese zusätzliche Zeichen dafür, dass dass wir nicht tatsächlich in so etwas wie 1,4 ABC auf der Kommandozeile. Jetzt werden wir einige Aliase erstellen seit RV2 und RV3 nicht sehr hilfreich Namen. Wir sind stattdessen wird anrufen sie in Datei-und out-Datei. Jetzt werden wir dafür sorgen, dass unsere Faktor war eigentlich gültig. So dass, wenn Faktor kleiner als oder gleich ist Null oder größer als 100, dann nach die Spezifikation, sollten wir zurückweisen dass Faktor. Wenn wir sicher sind, dass es gut ist, jetzt können wir öffnen Sie die n-Datei, und wir müssen sicher, dass es erfolgreich geöffnet wurde. Falls es nicht klappt, wird dieser Wert null zurück. Wir werden die out-Datei zu öffnen. Und wieder, um zu überprüfen, wollen wir sicher, dass es erfolgreich geöffnet. Und wenn es nicht erfolgreich zu öffnen, dann müssen wir auch sicher sein, um zu schließen die n-Datei, die ursprünglich erfolgreich geöffnet, sonst haben wir ein Speicherleck. So, jetzt werden wir in der Bitmap lesen Datei-Header-und Bitmap-info Header von der n-Datei. Wir werden sicherstellen, dass die n-Datei war ein gültiges Bitmap. OK. So, jetzt werden wir beginnen einige Änderungen. Also, da werden wir sich zu ändern Dinge, wollen wir zuerst daran zu erinnern, die alt Breite der n-Datei. Wir wollen die alte Polsterung erinnern die n-Datei mit dem gleichen Berechnungs von copy.c. Und jetzt werden wir ändern die Bitmap info-Header. Und so sind wir Multiplikation sowohl die Breite als und die Höhe von Faktor seit das ist, was wir durch die Skalierung. Wir werden zur Bestimmung der neue Polsterung der Datei mit der neuen Breite. Und wir werden um festzustellen, das neue Größe des Bildes mit der Anzahl von Bytes in einer einzelnen Zeile, die zu gehen ist ist die Anzahl der Pixel in dieser Reihe Fache der Größe eines Pixels plus Anzahl der Bytes der Polsterung am Ende dieser Zeile und Multiplizieren alles, durch die Anzahl der Zeilen, die wir haben. Also das ist die Anzahl der Bytes haben wir in unserem Bilddaten. Bf.Bfsize jetzt wird sich die Zahl von Bytes in unserer Beta-plus-Bild die Größe unseres Header. Also plus Größe von Bitmap-Datei-Header und die Größe der Bitmap-Info-Header. OK. Das ist es also für unsere Überschriften. Wir können den Dateikopf schreiben und info-Header aus, um unsere einzureichen, und wir sind gut. Jetzt ist es Zeit, um tatsächlich starten Schreiben der Pixel Daten an die Datei aus. Wir werden ein Puffer der Größe erklären alt Breite RGB verdreifacht, und wir sind gehen, um eine Variable deklarieren Reihe taub, was wir zu gehen anfangs gleich negativ 1 gesetzt. Wir werden sehen, dass wir vorhaben, werden mit dass, um zu verfolgen, was halten Zeile wir derzeit geladen haben in diesen Puffer. OK. So, jetzt im Gegensatz zu den Standard-Ausgabe, statt Laufen an der in Datei, werden wir über jeden laufen Zeile in der Datei aus und herauszufinden, welche Zeile in der Datei in die wir wollen Stellen in dieser Zeile in der Datei aus. So Iteration über alle Zeilen in der aus Datei mit der neuen Höhe, wir sind erste gehen, um die Zeile in der alten bestimmen Datei werden wir verwenden, was wir sind werde, indem man diesen Strom zu tun Zeile geteilt durch Faktor. Also, das wird uns die Zeile zu geben in der alten Datei, die wir wollen. So jetzt, wenn Zeile taub ist nicht gleich alt y, wir gehen, um die Zeile gelesen zu haben, , wir wollen in unserem aktuellen Zeile Puffer. Also, wie sollen wir das tun? Erstens, wir gehen, um herauszufinden, die Position, die diese Zeile in die beginnt Originaldatei. So, dass die Position sein wird, Vergangenheit alle unsere Kopf-und jetzt vorbei an alten y Zeilen. Und so, wie viele Bytes sind in einer Reihe? Auch Größe der RGB-Tripel alten Zeiten Breite plus alte Polsterung, damit ist die Anzahl der Bytes in einer einzelnen Zeile. Und wir wollen an alten y Zeilen zu überspringen. So werden wir f suchen, und wir sind mit seek eingestellt, um von Anfang an Anfang einer Datei. Wir gehen bis f versuchen, diese Position in der Datei, setzen uns auf die Beginn der Reihe wollen wir in unsere Puffer gelesen. Wir werden Zeile festgelegt taub gleich alt y. So jetzt, wenn wir eine Schleife zurück und wir wollen verwenden dieselbe Zeile in unsere Datei aus, dann werden wir nicht zu lesen Sie es wieder unnötig. Also wirklich, ist taub Reihe nur eine Optimierung. Schließlich werden wir in den Lese aktuelle Zeile die alte Breite RGB verdreifacht dass wir von der Originaldatei. So, jetzt aktuellen Zeile enthält die Pixel aus die Original-Datei, die wir wollen schreiben Sie in die Datei. So, jetzt, genau wie oben, statt Iteration über der alten Datei, müssen wir es in den neuen Dateien Zeilen durchlaufen. Na hier, statt der Iteration über alle der alten Pixel, die in aktuellen Reihe, wir überlaufen alle die wollen Pixel in unsere neue Datei in diese bestimmte Zeile. Warum wollen wir das tun? Weil wir hier sehen, dass wir nicht tatsächlich notwendigerweise unter Verwendung aller Pixel in der Originaldatei. Weil, wenn wir schrumpfen, könnten wir wirklich wollen, um die Pixel zu überspringen. Und wir sehen, dass diese - x geteilt durch den Faktor - spiegelt eng hier oben, wo wir sagen, y geteilt durch den Faktor, um herauszufinden, dass die alte y-ten Zeile entspricht die y-te Zeile in dieser neuen Datei. Jetzt werden wir alle schreiben diese Pixel von der alten Reihe in unserer neuen Reihe. Sobald wir das getan haben, müssen wir nur setzen die Polsterung am Ende unserer Reihe Und wir werden Schleife zurück und fahren alle Zeilen in der neuen Datei. Am Ende müssen wir unsere alten zu schließen Datei, schließen Sie unsere neue Datei und Rückkehr Null, weil alles gut lief. Mein Name ist Rob und das war Recess. [MUSIC SPIEL]