1 00:00:00,000 --> 00:00:12,240 >> [Musiikki soi] 2 00:00:12,240 --> 00:00:15,870 >> ROB BOWDEN: Hei, olen Rob, katsotaanpa kokeile tätä on koon. 3 00:00:15,870 --> 00:00:21,100 Joten, käymme jälleen aloittaa pohjimmiltaan kopio copy.c, ja 4 00:00:21,100 --> 00:00:22,860 tehdä muutamia muutoksia. 5 00:00:22,860 --> 00:00:26,280 Huomaa heti näemme muutoksen, jossa sen sijaan tarkistaa, jos 6 00:00:26,280 --> 00:00:30,440 argc ei yhtä 3, haluamme tarkistaa jos argc ei ole yhtä kuin 4, koska 7 00:00:30,440 --> 00:00:34,350 Nyt emme vain ryhtyy infile ja outfile, mutta olemme myös ryhtyy 8 00:00:34,350 --> 00:00:38,980 n, joka on summa, jonka olemme skaalaus alkuperäisen kuvan. 9 00:00:38,980 --> 00:00:44,340 Kun olemme varmoja, että voimme vain muuntaa n on kokonaisluku skaalataan atoi. 10 00:00:44,340 --> 00:00:48,760 >> Joten, nyt aiomme luoda jonkinlaista peitenimet, soita argv 2 infile, ja 11 00:00:48,760 --> 00:00:54,240 argv 3 outfile, koska argv 2 ja argv 3 eivät juurikaan auta nimiä. 12 00:00:54,240 --> 00:00:58,510 Nyt haluamme varmista n on rajoissa odotamme, niin 13 00:00:58,510 --> 00:01:02,910 spec täsmennetään, että jos se on alle tai nolla, tai suurempi kuin 100, 14 00:01:02,910 --> 00:01:08,580 niin se on virheellinen resize tekijä, ja meidän pitäisi varoittaa käyttäjää siitä. 15 00:01:08,580 --> 00:01:13,090 >> Kun olemme yli kaiken, että voimme vihdoin avaamme infile, ja me tarvitsemme 16 00:01:13,090 --> 00:01:16,270 virheille varmista, että avaaminen ei onnistu jostain syystä. 17 00:01:16,270 --> 00:01:19,860 Meidän on myös avata outfile, ja jälleen virhe varmista, että 18 00:01:19,860 --> 00:01:21,250 ei onnistu jostain syystä. 19 00:01:21,250 --> 00:01:26,270 Mutta muista, jos avaaminen outfile epäonnistui että meidän täytyy sulkea 20 00:01:26,270 --> 00:01:29,040 infile, joka oli jo avattu. 21 00:01:29,040 --> 00:01:33,690 >> Niin, olettaen, että ei onnistu, niin Me olemme - aivan kuten copy.c-- 22 00:01:33,690 --> 00:01:36,140 aion lukea otsikkoon alkaen infile. 23 00:01:36,140 --> 00:01:40,130 Aiomme varmistaa se voimassa bittikartta, mutta nyt aiomme tehdä joitakin 24 00:01:40,130 --> 00:01:41,620 asioita hieman eri tavalla. 25 00:01:41,620 --> 00:01:44,870 Joten ensimmäinen, aiomme haluavat Muistan alkuperäinen leveys ja korkeus 26 00:01:44,870 --> 00:01:48,290 ja infile, koska aiomme muutamme sitä outfile. 27 00:01:48,290 --> 00:01:53,890 Joten nyt muistaa, että kumman syystä bi.biheight, on negatiivinen, ja 28 00:01:53,890 --> 00:01:58,670 joten todellinen korkeus, positiivinen, me halua ottaa itseisarvo. 29 00:01:58,670 --> 00:02:02,580 >> Nyt, täyte tulee olemaan sama laskelma kuin se oli copy.c, 30 00:02:02,580 --> 00:02:06,060 käyttämällä vanhaa leveys, ja nyt olemme todella aikoo muuttaa 31 00:02:06,060 --> 00:02:07,320 Mitä meidän otsikossa. 32 00:02:07,320 --> 00:02:11,200 Joten aiomme moninkertaistaa leveyttä n, koska olemme skaalaus leveys 33 00:02:11,200 --> 00:02:15,100 n, kerrotaan korkeutta n, koska olemme skaalaus n, ja nyt meillä on 34 00:02:15,100 --> 00:02:19,250 laskenta uusi pehmuste perustuu uusi leveys. 35 00:02:19,250 --> 00:02:21,840 >> Joten nyt meidän täytyy muuttaa joitakin muilla aloilla meidän otsikossa. 36 00:02:21,840 --> 00:02:26,890 Bi.biSizeImage on tarkoitus olla koko on kaikki tavua pikseliä 37 00:02:26,890 --> 00:02:28,520 ja täyte kuvan. 38 00:02:28,520 --> 00:02:34,190 Ja niin koko yhden rivin meidän kuva on koko RGB-kolminkertainen, koko 39 00:02:34,190 --> 00:02:39,430 yhden pikselin, kertaa enemmän pikseliä peräkkäin, plus sisennysarvot 40 00:02:39,430 --> 00:02:40,910 rivin päässä. 41 00:02:40,910 --> 00:02:45,200 Ja sitten me aiomme kerrotaan, että itseisarvo pituutemme saada 42 00:02:45,200 --> 00:02:48,350 tavujen kokonaismäärä kuvatiedoissa. 43 00:02:48,350 --> 00:02:53,050 bf.bfSize on vain kokonaismäärä tavujen meidän kuvadatan, joten 44 00:02:53,050 --> 00:02:56,530 bi.biSizeImage, plus koko meidän otsikot. 45 00:02:56,530 --> 00:02:59,850 Joten, lisäämällä koosta bittikarttatiedoston header, ja koko bitmap info 46 00:02:59,850 --> 00:03:00,800 header, OK. 47 00:03:00,800 --> 00:03:03,170 Niin, että meidän tarvitsee muuttaa meidän otsikot. 48 00:03:03,170 --> 00:03:07,020 Nyt me kirjoittaa bittikarttatiedoston otsikko meidän outfile, ja meidän bitmap tiedot 49 00:03:07,020 --> 00:03:09,880 header meidän outfile, ja nyt olemme valmiita aloittamaan menossa 50 00:03:09,880 --> 00:03:11,990 yli todellisen pikseliä. 51 00:03:11,990 --> 00:03:15,720 >> Joten haluamme kerrata yli infile n pyyhkäisyjuovaa. 52 00:03:15,720 --> 00:03:17,730 Joten haluamme kerrata yli oldheight. 53 00:03:17,730 --> 00:03:20,830 Siksi meidän piti muistaa alkuperäinen korkeus, ennen kuin muutamme sitä 54 00:03:20,830 --> 00:03:23,040 ja skaalata se n. 55 00:03:23,040 --> 00:03:27,810 Nyt aiomme lukea yhden rivi infile osaksi 56 00:03:27,810 --> 00:03:30,630 puskurin kokoa oldwidth. 57 00:03:30,630 --> 00:03:36,190 Joten tässä, me freading koko RGB triple, yksi pikseli, ja vanhoja leveys 58 00:03:36,190 --> 00:03:39,760 ne infile meidän puskuriin. 59 00:03:39,760 --> 00:03:43,480 Ja se tulee olemaan koko rivi tässä array. 60 00:03:43,480 --> 00:03:50,390 Joten nyt haluamme kerrata n kertaa tulosta tämä rivi meidän outfile n kertaa. 61 00:03:50,390 --> 00:03:52,510 Ja niin sitähän tämä silmukka on tekemässä. 62 00:03:52,510 --> 00:03:57,910 Tämä sisäinen silmukka iteroimalla yli soutaa itse yli array, tulostus 63 00:03:57,910 --> 00:04:00,710 jokaisen pikselin array n kertaa. 64 00:04:00,710 --> 00:04:04,510 Joten zeroth elementti tulostetaan n kertaa, ensimmäinen elementti on 65 00:04:04,510 --> 00:04:05,660 painetut n kertaa. 66 00:04:05,660 --> 00:04:10,820 Ja se on tavallaan, miten aiomme vaakasuoraan mittakaavassa outfile, ja 67 00:04:10,820 --> 00:04:13,390 Tämän silmukan, koska olemme silmukoiden n kertaa, miten aiomme 68 00:04:13,390 --> 00:04:15,580 vertikaalisesti mittakaavassa. 69 00:04:15,580 --> 00:04:19,850 >> Tänne, näemme, että meidän täytyy lisätä padding lopussa kunkin rivin. 70 00:04:19,850 --> 00:04:25,050 Siksi tämä on sisällä silmukan joka tulostaa n riviä vain 71 00:04:25,050 --> 00:04:28,400 tämä krs infile. 72 00:04:28,400 --> 00:04:32,150 Sitten tänne, aion ohittaa pehmuste infile, koska kerran 73 00:04:32,150 --> 00:04:34,560 olemme tehneet yhden rivin infile, emme välitä 74 00:04:34,560 --> 00:04:35,290 mikä täyte oli. 75 00:04:35,290 --> 00:04:37,110 Haluamme vain päästä toiseen riviin. 76 00:04:37,110 --> 00:04:40,870 Ja sitten me silmukka takaisin ja tehdä kaikki Tämän uudelleen toisessa rivissä. 77 00:04:40,870 --> 00:04:44,406 >> Lopuksi, kun olemme tehneet kaiken sen kanssa, voimme sulkea infile lähellä 78 00:04:44,406 --> 00:04:47,430 outfile, ja paluu 0, koska olemme tehneet. 79 00:04:47,430 --> 00:04:50,330 >> Nimeni on Rob, ja tämä oli resize. 80 00:04:50,330 --> 00:04:54,934 >> [Musiikki soi]