[Παίζει μουσική] ROB BOWDEN: Hi. Είμαι Rob και αφήστε το μέγεθος του μέχρι αυτό το πρόβλημα. Έτσι θα πάμε για να αρχίσει με copy.c ως ένα πρότυπο, αλλά θα πάμε να κάνει αρκετές αλλαγές. Τώρα βλέπουμε είμαστε αμέσως κάνοντας μια αλλάξετε τη θέση όπου είμαστε πλέον τον έλεγχο για RXC μας δεν ισούται με 3, αλλά τώρα είμαστε έλεγχο rc δεν ισούται με 4. Επειδή θέλουμε επίσης να περιλαμβάνουν, Εκτός από τα στο αρχείο και από τα αρχεία επιχειρήματα, f η οποία πρόκειται να είναι αυτό συντελεστής με τον οποίο είμαστε κλιμάκωση. Έτσι, τη στιγμή που είμαστε σίγουροι ότι θέλουμε να χρησιμοποιήστε s scan f να μετατρέψει το string argv1 σε ένα πλωτήρα. Και θα πάμε να αποθηκεύσετε ότι στον παράγοντα. Αυτό το πρόσθετο χαρακτήρα είναι να διασφαλίσουμε ότι στην πραγματικότητα δεν εισέρχονται κάτι σαν 1.4 ABC στη γραμμή εντολών. Τώρα θα πάμε να δημιουργήσει κάποια ψευδώνυμα δεδομένου ότι RV2 και RV3 δεν είναι πολύ χρήσιμο ονόματα. Είμαστε, αντ 'αυτού, πρόκειται να καλέσετε τους στο αρχείο και από το αρχείο. Τώρα θα πάμε για να βεβαιωθείτε ότι παράγοντας μας ήταν πραγματικά ισχύει. Έτσι, αν ο παράγοντας είναι μικρότερη ή ίση προς μηδέν ή μεγαλύτερος από 100, τότε, όπως ανά το spec, θα πρέπει να απορρίψουμε ο παράγοντας αυτός. Όταν είμαστε σίγουροι ότι είναι καλό, τώρα μπορούμε να ανοίξτε το αρχείο n, και πρέπει να κάνουμε βεβαιωθείτε ότι η επιτυχία άνοιξε. Αν δεν το έκανε, ότι θα επιστρέψει null. Εμείς πάμε για να ανοίξετε το αρχείο έξω. Και πάλι, θέλουμε να ελέγξετε για να βεβαιωθείτε βεβαιωθείτε ότι έχει ανοίξει με επιτυχία. Και αν δεν ανοίξει με επιτυχία, τότε θα πρέπει επίσης να βεβαιωθείτε ότι έχετε κλείσει το αρχείο η οποία αρχικά με επιτυχία άνοιξε, ή αλλιώς έχουμε ένα διαρροή μνήμης. Έτσι, τώρα θα πάμε να διαβάσετε στο bitmap κεφαλίδα του αρχείου και πληροφορίες bitmap header από το αρχείο n. Εμείς πάμε για να βεβαιωθείτε ότι η n του αρχείου ήταν έγκυρη bitmap. OK. Έτσι, τώρα θα πάμε για να ξεκινήσει κάνοντας κάποιες αλλαγές. Έτσι, επειδή θα πάμε να αλλάζει πράγματα, πρώτα θέλουμε να θυμόμαστε το παλιά πλάτος του αρχείου n. Θέλουμε να θυμηθούμε τα παλιά παραγέμισμα των το αρχείο ν χρησιμοποιώντας τον ίδιο υπολογισμό από copy.c. Και τώρα θα πάμε να αλλάξουμε οι πληροφορίες bitmap header. Και έτσι είμαστε πολλαπλασιασμό τόσο το πλάτος και το ύψος από τον παράγοντα αφού αυτό είναι που είμαστε κλιμάκωση του. Εμείς πάμε για να προσδιοριστεί η νέα padding του αρχείου χρησιμοποιώντας το νέο πλάτος. Και θα πάμε για να καθορίσει τους νέους το μέγεθος της εικόνας, χρησιμοποιώντας τον αριθμό των bytes σε μια ενιαία γραμμή που πρόκειται να είναι ο αριθμός των εικονοστοιχείων σε αυτή τη γραμμή φορές το μέγεθος ενός εικονοστοιχείου συν το τον αριθμό των bytes παραγεμίσματος στο τέλος της εν λόγω γραμμής, και πολλαπλασιάζοντας όλα αυτά από τον αριθμό των γραμμών που έχουμε. Έτσι, αυτός είναι ο αριθμός των bytes έχουμε στα δεδομένα της εικόνας μας. Bf.Bfsize τώρα πρόκειται να είναι ο αριθμός των bytes στην εικόνα beta μας συν το μέγεθος των κεφαλίδων μας. Έτσι, συν το μέγεθος του header αρχείου bitmap και το μέγεθος του bitmap πληροφορίες κεφαλίδας. OK. Έτσι, αυτό είναι για τις κεφαλίδες μας. Μπορούμε να γράψουμε το κεφάλι του αρχείου και Πληροφορίες κεφαλίδα έξω μας αρχείο, και είμαστε καλά. Τώρα ήρθε η ώρα να αρχίσετε πραγματικά γράφοντας το pixel δεδομένα στο φάκελο έξω. Εμείς πάμε για να δηλώσει ένα buffer μεγέθους παλιά πλάτος RGB τριπλασιάζεται, και είμαστε πρόκειται να δηλώσει μια μεταβλητή που ονομάζεται σειρά μουδιασμένος, η οποία είναι θα πάμε να αρχικά τίθενται ίσες με αρνητικό 1. Θα δούμε πως θα πάμε να χρησιμοποιούν ότι, προκειμένου να παρακολουθείτε ό, τι σειρά που έχουν φορτωθεί σε αυτό το buffer. OK. Έτσι τώρα σε αντίθεση με την τυπική έκδοση, αντί επανάληψη πάνω στο στο αρχείο, θα πάμε για να μετακινηθείτε πάνω στο καθένα γραμμή στο αρχείο έξω και να καταλάβω ποια γραμμή στο αρχείο που θέλουμε να τοποθετήσει σε αυτή τη σειρά στο αρχείο έξω. Έτσι, πάνω από την επανάληψη όλων των γραμμών του έξω αρχείο χρησιμοποιώντας το νέο ύψος, είμαστε οι πρώτοι πρόκειται να προσδιοριστεί η γραμμή στην παλιά αρχείο θα πάμε να χρησιμοποιούν, το οποίο είμαστε πρόκειται να κάνει με τη λήψη αυτό το ρεύμα σειρά χωρίζεται από τον παράγοντα. Έτσι, αυτό πρόκειται να μας δώσει τη γραμμή στο παλιό αρχείο που θέλουμε. Έτσι τώρα, αν σειρά μουδιασμένος δεν είναι ίσο με παλιά y, θα πάμε να πρέπει να διαβάσει την γραμμή ότι θέλουμε στην τρέχουσα buffer σειρά μας. Λοιπόν, πώς θα πάμε να το κάνουμε αυτό; Κατ 'αρχάς, θα πάμε να καταλάβουμε το θέση που ξεκινά αυτή τη γραμμή στο αρχικό αρχείο. Έτσι, η θέση θα είναι παρελθόν όλα κεφαλίδες μας και πλέον παρελθόν παλιά y σειρές. Και έτσι πόσα bytes σε μια ενιαία γραμμή; Και πάλι, το μέγεθος του RGB triple φορές παλιά πλάτος συν παλιά padding, έτσι ώστε να είναι η τον αριθμό των bytes σε μια ενιαία γραμμή. Και θέλουμε να παραλείψετε το παρελθόν παλιά y σειρές. Έτσι θα πάμε για να στ αναζητήσουν και να είμαστε χρησιμοποιώντας επιδιώξει σετ για να ξεκινήσει από το ξεκινώντας από ένα αρχείο. Εμείς πάμε για να στ αναζητούν σε αυτή τη θέση στο αρχείο, μας φέρνει κατά τη αρχίζοντας από τη γραμμή που θέλουμε για να διαβάσετε σε ρυθμιστικό μας. Εμείς πάμε για να ορίσετε σειρά μουδιασμένος ίσο με το παλιό y. Έτσι τώρα, αν είμαστε πίσω βρόχο και θέλουμε να χρησιμοποιήσετε την ίδια γραμμή στο φάκελό μας, τότε δεν πρόκειται να διαβάσετε την ξανά άσκοπα. Έτσι, πραγματικά, είναι μουδιασμένος σειρά απλά η βελτιστοποίηση. Τέλος, θα πάμε για να διαβάσετε σε το τρέχουσα γραμμή το παλιό πλάτος RGB τριπλασιάζει ότι θέλουμε από το αρχικό αρχείο. Έτσι τώρα σειρά τρέχουσα περιέχει τα pixels από το αρχικό αρχείο που θέλουμε να γράψετε στο αρχείο έξω. Μέχρι τώρα, όπως ακριβώς ανωτέρω, αντί της επανάληψη πάνω από το παλιό αρχείο, χρειαζόμαστε να επαναλάβει για τα νέα αρχεία σειρές. Καλά εδώ, αντί επανάληψη πάνω από όλα των παλαιών pixels που στην τρέχουσα σειρά, θέλουμε να μετακινηθείτε σε όλα τα pixel σε νέο αρχείο μας σε αυτό συγκεκριμένη γραμμή. Γιατί θέλουμε να το κάνουμε αυτό; Επειδή βλέπουμε εδώ ότι δεν είμαστε στην πραγματικότητα είναι απαραίτητη η χρήση όλων των εικονοστοιχεία στο αρχικό αρχείο. Γιατί αν είμαστε συρρικνώνεται, θα μπορούσαμε να πραγματικά θέλετε να παραλείψετε τα pixels. Και βλέπουμε ότι αυτό - x διαιρείται με συντελεστή - στενά καθρέφτες εδώ όταν λέμε y διαιρείται με συντελεστή να καταλάβω ότι το παλιό y-οστή γραμμή αντιστοιχεί σε η σειρά y-ου σε αυτό το νέο αρχείο. Τώρα θα πάμε να γράψετε όλα Αυτά τα εικονοστοιχεία από την παλιά σειρά σε νέα γραμμή μας. Αφού έχουμε κάνει αυτό, θα πρέπει απλά να τη βάτα στο τέλος της σειράς μας Και θα στραφεί προς τα πίσω και να συνεχίσει για όλες τις γραμμές στο νέο αρχείο μας. Στο τέλος, θα πρέπει να κλείσει το παλιό αρχείο, κλείστε νέο αρχείο μας, και την επιστροφή μηδέν, αφού όλα πήγαν καλά. Το όνομά μου είναι Rob και αυτό ήταν εσοχή. [Παίζει μουσική]