1 00:00:00,000 --> 00:00:00,996 2 00:00:00,996 --> 00:00:12,470 >> [Παίζει μουσική] 3 00:00:12,470 --> 00:00:13,210 >> ROB BOWDEN: Hi. 4 00:00:13,210 --> 00:00:16,870 Είμαι Rob και αφήστε το μέγεθος του μέχρι αυτό το πρόβλημα. 5 00:00:16,870 --> 00:00:20,990 Έτσι θα πάμε για να αρχίσει με copy.c ως ένα πρότυπο, αλλά θα πάμε να 6 00:00:20,990 --> 00:00:23,340 κάνει αρκετές αλλαγές. 7 00:00:23,340 --> 00:00:27,570 >> Τώρα βλέπουμε είμαστε αμέσως κάνοντας μια αλλάξετε τη θέση όπου είμαστε πλέον τον έλεγχο 8 00:00:27,570 --> 00:00:31,560 για RXC μας δεν ισούται με 3, αλλά τώρα είμαστε έλεγχο rc δεν ισούται με 4. 9 00:00:31,560 --> 00:00:34,670 Επειδή θέλουμε επίσης να περιλαμβάνουν, Εκτός από τα στο αρχείο και από τα αρχεία 10 00:00:34,670 --> 00:00:39,550 επιχειρήματα, f η οποία πρόκειται να είναι αυτό συντελεστής με τον οποίο είμαστε κλιμάκωση. 11 00:00:39,550 --> 00:00:45,430 >> Έτσι, τη στιγμή που είμαστε σίγουροι ότι θέλουμε να χρησιμοποιήστε s scan f να μετατρέψει το string 12 00:00:45,430 --> 00:00:49,030 argv1 σε ένα πλωτήρα. 13 00:00:49,030 --> 00:00:51,330 Και θα πάμε να αποθηκεύσετε ότι στον παράγοντα. 14 00:00:51,330 --> 00:00:55,180 Αυτό το πρόσθετο χαρακτήρα είναι να διασφαλίσουμε ότι στην πραγματικότητα δεν εισέρχονται 15 00:00:55,180 --> 00:00:59,200 κάτι σαν 1.4 ABC στη γραμμή εντολών. 16 00:00:59,200 --> 00:01:02,960 >> Τώρα θα πάμε να δημιουργήσει κάποια ψευδώνυμα δεδομένου ότι RV2 και RV3 δεν είναι 17 00:01:02,960 --> 00:01:04,310 πολύ χρήσιμο ονόματα. 18 00:01:04,310 --> 00:01:07,660 Είμαστε, αντ 'αυτού, πρόκειται να καλέσετε τους στο αρχείο και από το αρχείο. 19 00:01:07,660 --> 00:01:11,580 Τώρα θα πάμε για να βεβαιωθείτε ότι παράγοντας μας ήταν πραγματικά ισχύει. 20 00:01:11,580 --> 00:01:16,330 Έτσι, αν ο παράγοντας είναι μικρότερη ή ίση προς μηδέν ή μεγαλύτερος από 100, τότε, όπως ανά 21 00:01:16,330 --> 00:01:19,660 το spec, θα πρέπει να απορρίψουμε ο παράγοντας αυτός. 22 00:01:19,660 --> 00:01:23,890 >> Όταν είμαστε σίγουροι ότι είναι καλό, τώρα μπορούμε να ανοίξτε το αρχείο n, και πρέπει να κάνουμε 23 00:01:23,890 --> 00:01:25,950 βεβαιωθείτε ότι η επιτυχία άνοιξε. 24 00:01:25,950 --> 00:01:28,630 Αν δεν το έκανε, ότι θα επιστρέψει null. 25 00:01:28,630 --> 00:01:30,390 Εμείς πάμε για να ανοίξετε το αρχείο έξω. 26 00:01:30,390 --> 00:01:33,420 Και πάλι, θέλουμε να ελέγξετε για να βεβαιωθείτε βεβαιωθείτε ότι έχει ανοίξει με επιτυχία. 27 00:01:33,420 --> 00:01:37,270 Και αν δεν ανοίξει με επιτυχία, τότε θα πρέπει επίσης να βεβαιωθείτε ότι έχετε κλείσει 28 00:01:37,270 --> 00:01:40,870 το αρχείο η οποία αρχικά με επιτυχία άνοιξε, ή αλλιώς έχουμε ένα 29 00:01:40,870 --> 00:01:42,600 διαρροή μνήμης. 30 00:01:42,600 --> 00:01:46,350 >> Έτσι, τώρα θα πάμε να διαβάσετε στο bitmap κεφαλίδα του αρχείου και πληροφορίες bitmap 31 00:01:46,350 --> 00:01:48,890 header από το αρχείο n. 32 00:01:48,890 --> 00:01:52,360 Εμείς πάμε για να βεβαιωθείτε ότι η n του αρχείου ήταν έγκυρη bitmap. 33 00:01:52,360 --> 00:01:52,640 OK. 34 00:01:52,640 --> 00:01:55,100 >> Έτσι, τώρα θα πάμε για να ξεκινήσει κάνοντας κάποιες αλλαγές. 35 00:01:55,100 --> 00:01:58,840 Έτσι, επειδή θα πάμε να αλλάζει πράγματα, πρώτα θέλουμε να θυμόμαστε το 36 00:01:58,840 --> 00:02:01,510 παλιά πλάτος του αρχείου n. 37 00:02:01,510 --> 00:02:05,160 Θέλουμε να θυμηθούμε τα παλιά παραγέμισμα των το αρχείο ν χρησιμοποιώντας τον ίδιο υπολογισμό 38 00:02:05,160 --> 00:02:06,990 από copy.c. 39 00:02:06,990 --> 00:02:09,840 >> Και τώρα θα πάμε να αλλάξουμε οι πληροφορίες bitmap header. 40 00:02:09,840 --> 00:02:13,630 Και έτσι είμαστε πολλαπλασιασμό τόσο το πλάτος και το ύψος από τον παράγοντα αφού 41 00:02:13,630 --> 00:02:15,750 αυτό είναι που είμαστε κλιμάκωση του. 42 00:02:15,750 --> 00:02:18,420 Εμείς πάμε για να προσδιοριστεί η νέα padding του αρχείου 43 00:02:18,420 --> 00:02:21,140 χρησιμοποιώντας το νέο πλάτος. 44 00:02:21,140 --> 00:02:27,330 Και θα πάμε για να καθορίσει τους νέους το μέγεθος της εικόνας, χρησιμοποιώντας τον αριθμό των 45 00:02:27,330 --> 00:02:31,610 bytes σε μια ενιαία γραμμή που πρόκειται να είναι ο αριθμός των εικονοστοιχείων σε αυτή τη γραμμή 46 00:02:31,610 --> 00:02:35,960 φορές το μέγεθος ενός εικονοστοιχείου συν το τον αριθμό των bytes παραγεμίσματος στο τέλος 47 00:02:35,960 --> 00:02:40,310 της εν λόγω γραμμής, και πολλαπλασιάζοντας όλα αυτά από τον αριθμό των γραμμών που έχουμε. 48 00:02:40,310 --> 00:02:43,800 Έτσι, αυτός είναι ο αριθμός των bytes έχουμε στα δεδομένα της εικόνας μας. 49 00:02:43,800 --> 00:02:48,190 >> Bf.Bfsize τώρα πρόκειται να είναι ο αριθμός των bytes στην εικόνα beta μας συν 50 00:02:48,190 --> 00:02:49,350 το μέγεθος των κεφαλίδων μας. 51 00:02:49,350 --> 00:02:53,910 Έτσι, συν το μέγεθος του header αρχείου bitmap και το μέγεθος του bitmap πληροφορίες κεφαλίδας. 52 00:02:53,910 --> 00:02:54,510 OK. 53 00:02:54,510 --> 00:02:56,440 Έτσι, αυτό είναι για τις κεφαλίδες μας. 54 00:02:56,440 --> 00:02:59,030 Μπορούμε να γράψουμε το κεφάλι του αρχείου και Πληροφορίες κεφαλίδα έξω μας 55 00:02:59,030 --> 00:03:01,590 αρχείο, και είμαστε καλά. 56 00:03:01,590 --> 00:03:03,800 >> Τώρα ήρθε η ώρα να αρχίσετε πραγματικά γράφοντας το pixel 57 00:03:03,800 --> 00:03:05,120 δεδομένα στο φάκελο έξω. 58 00:03:05,120 --> 00:03:10,460 Εμείς πάμε για να δηλώσει ένα buffer μεγέθους παλιά πλάτος RGB τριπλασιάζεται, και είμαστε 59 00:03:10,460 --> 00:03:13,790 πρόκειται να δηλώσει μια μεταβλητή που ονομάζεται σειρά μουδιασμένος, η οποία είναι θα πάμε να 60 00:03:13,790 --> 00:03:15,640 αρχικά τίθενται ίσες με αρνητικό 1. 61 00:03:15,640 --> 00:03:19,090 Θα δούμε πως θα πάμε να χρησιμοποιούν ότι, προκειμένου να παρακολουθείτε ό, τι 62 00:03:19,090 --> 00:03:22,640 σειρά που έχουν φορτωθεί σε αυτό το buffer. 63 00:03:22,640 --> 00:03:23,290 OK. 64 00:03:23,290 --> 00:03:28,750 >> Έτσι τώρα σε αντίθεση με την τυπική έκδοση, αντί επανάληψη πάνω στο στο 65 00:03:28,750 --> 00:03:32,900 αρχείο, θα πάμε για να μετακινηθείτε πάνω στο καθένα γραμμή στο αρχείο έξω και να καταλάβω 66 00:03:32,900 --> 00:03:38,130 ποια γραμμή στο αρχείο που θέλουμε να τοποθετήσει σε αυτή τη σειρά στο αρχείο έξω. 67 00:03:38,130 --> 00:03:44,930 Έτσι, πάνω από την επανάληψη όλων των γραμμών του έξω αρχείο χρησιμοποιώντας το νέο ύψος, είμαστε οι πρώτοι 68 00:03:44,930 --> 00:03:48,890 πρόκειται να προσδιοριστεί η γραμμή στην παλιά αρχείο θα πάμε να χρησιμοποιούν, το οποίο είμαστε 69 00:03:48,890 --> 00:03:53,560 πρόκειται να κάνει με τη λήψη αυτό το ρεύμα σειρά χωρίζεται από τον παράγοντα. 70 00:03:53,560 --> 00:03:58,000 Έτσι, αυτό πρόκειται να μας δώσει τη γραμμή στο παλιό αρχείο που θέλουμε. 71 00:03:58,000 --> 00:04:03,310 >> Έτσι τώρα, αν σειρά μουδιασμένος δεν είναι ίσο με παλιά y, θα πάμε να πρέπει να διαβάσει την γραμμή 72 00:04:03,310 --> 00:04:05,940 ότι θέλουμε στην τρέχουσα buffer σειρά μας. 73 00:04:05,940 --> 00:04:07,700 Λοιπόν, πώς θα πάμε να το κάνουμε αυτό; 74 00:04:07,700 --> 00:04:11,650 Κατ 'αρχάς, θα πάμε να καταλάβουμε το θέση που ξεκινά αυτή τη γραμμή στο 75 00:04:11,650 --> 00:04:13,100 αρχικό αρχείο. 76 00:04:13,100 --> 00:04:18,630 Έτσι, η θέση θα είναι παρελθόν όλα κεφαλίδες μας και 77 00:04:18,630 --> 00:04:21,589 πλέον παρελθόν παλιά y σειρές. 78 00:04:21,589 --> 00:04:23,880 >> Και έτσι πόσα bytes σε μια ενιαία γραμμή; 79 00:04:23,880 --> 00:04:28,740 Και πάλι, το μέγεθος του RGB triple φορές παλιά πλάτος συν παλιά padding, έτσι ώστε να είναι η 80 00:04:28,740 --> 00:04:30,640 τον αριθμό των bytes σε μια ενιαία γραμμή. 81 00:04:30,640 --> 00:04:33,680 Και θέλουμε να παραλείψετε το παρελθόν παλιά y σειρές. 82 00:04:33,680 --> 00:04:37,580 Έτσι θα πάμε για να στ αναζητήσουν και να είμαστε χρησιμοποιώντας επιδιώξει σετ για να ξεκινήσει από το 83 00:04:37,580 --> 00:04:39,100 ξεκινώντας από ένα αρχείο. 84 00:04:39,100 --> 00:04:42,740 Εμείς πάμε για να στ αναζητούν σε αυτή τη θέση στο αρχείο, μας φέρνει κατά τη 85 00:04:42,740 --> 00:04:46,500 αρχίζοντας από τη γραμμή που θέλουμε για να διαβάσετε σε ρυθμιστικό μας. 86 00:04:46,500 --> 00:04:48,510 >> Εμείς πάμε για να ορίσετε σειρά μουδιασμένος ίσο με το παλιό y. 87 00:04:48,510 --> 00:04:53,080 Έτσι τώρα, αν είμαστε πίσω βρόχο και θέλουμε να χρησιμοποιήσετε την ίδια γραμμή στο φάκελό μας, 88 00:04:53,080 --> 00:04:55,970 τότε δεν πρόκειται να διαβάσετε την ξανά άσκοπα. 89 00:04:55,970 --> 00:04:59,310 Έτσι, πραγματικά, είναι μουδιασμένος σειρά απλά η βελτιστοποίηση. 90 00:04:59,310 --> 00:05:05,500 >> Τέλος, θα πάμε για να διαβάσετε σε το τρέχουσα γραμμή το παλιό πλάτος RGB τριπλασιάζει 91 00:05:05,500 --> 00:05:08,040 ότι θέλουμε από το αρχικό αρχείο. 92 00:05:08,040 --> 00:05:12,270 Έτσι τώρα σειρά τρέχουσα περιέχει τα pixels από το αρχικό αρχείο που θέλουμε να 93 00:05:12,270 --> 00:05:14,200 γράψετε στο αρχείο έξω. 94 00:05:14,200 --> 00:05:18,960 Μέχρι τώρα, όπως ακριβώς ανωτέρω, αντί της επανάληψη πάνω από το παλιό αρχείο, χρειαζόμαστε 95 00:05:18,960 --> 00:05:22,560 να επαναλάβει για τα νέα αρχεία σειρές. 96 00:05:22,560 --> 00:05:27,450 Καλά εδώ, αντί επανάληψη πάνω από όλα των παλαιών pixels που στην τρέχουσα σειρά, 97 00:05:27,450 --> 00:05:31,210 θέλουμε να μετακινηθείτε σε όλα τα pixel σε νέο αρχείο μας σε αυτό 98 00:05:31,210 --> 00:05:32,480 συγκεκριμένη γραμμή. 99 00:05:32,480 --> 00:05:34,140 >> Γιατί θέλουμε να το κάνουμε αυτό; 100 00:05:34,140 --> 00:05:38,960 Επειδή βλέπουμε εδώ ότι δεν είμαστε στην πραγματικότητα είναι απαραίτητη η χρήση όλων των 101 00:05:38,960 --> 00:05:41,020 εικονοστοιχεία στο αρχικό αρχείο. 102 00:05:41,020 --> 00:05:46,630 Γιατί αν είμαστε συρρικνώνεται, θα μπορούσαμε να πραγματικά θέλετε να παραλείψετε τα pixels. 103 00:05:46,630 --> 00:05:48,090 Και βλέπουμε ότι αυτό - 104 00:05:48,090 --> 00:05:49,690 x διαιρείται με συντελεστή - 105 00:05:49,690 --> 00:05:55,620 στενά καθρέφτες εδώ όταν λέμε y διαιρείται με συντελεστή να καταλάβω ότι 106 00:05:55,620 --> 00:06:02,480 το παλιό y-οστή γραμμή αντιστοιχεί σε η σειρά y-ου σε αυτό το νέο αρχείο. 107 00:06:02,480 --> 00:06:05,880 >> Τώρα θα πάμε να γράψετε όλα Αυτά τα εικονοστοιχεία από την παλιά σειρά 108 00:06:05,880 --> 00:06:07,440 σε νέα γραμμή μας. 109 00:06:07,440 --> 00:06:10,890 Αφού έχουμε κάνει αυτό, θα πρέπει απλά να τη βάτα στο τέλος της σειράς μας 110 00:06:10,890 --> 00:06:15,540 Και θα στραφεί προς τα πίσω και να συνεχίσει για όλες τις γραμμές στο νέο αρχείο μας. 111 00:06:15,540 --> 00:06:19,390 Στο τέλος, θα πρέπει να κλείσει το παλιό αρχείο, κλείστε νέο αρχείο μας, και την επιστροφή 112 00:06:19,390 --> 00:06:21,540 μηδέν, αφού όλα πήγαν καλά. 113 00:06:21,540 --> 00:06:24,220 >> Το όνομά μου είναι Rob και αυτό ήταν εσοχή. 114 00:06:24,220 --> 00:06:29,184 >> [Παίζει μουσική]