1 00:00:00,000 --> 00:00:00,996 2 00:00:00,996 --> 00:00:12,470 >> [Musiikki soi] 3 00:00:12,470 --> 00:00:13,210 >> ROB BOWDEN: Hei. 4 00:00:13,210 --> 00:00:16,870 Olen Rob ja anna koon tätä ongelmaa. 5 00:00:16,870 --> 00:00:20,990 Joten aiomme aloittaa copy.c kuin malli, mutta aiomme olla 6 00:00:20,990 --> 00:00:23,340 tekee melko muutamia muutoksia. 7 00:00:23,340 --> 00:00:27,570 >> Nyt näemme olemme välittömästi tehdä muuttaa minne olemme enää tarkistaa 8 00:00:27,570 --> 00:00:31,560 meidän RXC ei equal 3, mutta nyt me tarkastamme rc ei equal 4. 9 00:00:31,560 --> 00:00:34,670 Koska haluamme myös sisältyä Lisäksi tiedostojen ja ulos tiedostoja 10 00:00:34,670 --> 00:00:39,550 argumentteja, F, joka tulee olemaan tämän kerroin, jolla olemme skaalaus. 11 00:00:39,550 --> 00:00:45,430 >> Joten kun olemme varmoja, että haluamme käyttää s scan f muuntaa merkkijonon 12 00:00:45,430 --> 00:00:49,030 argv1 kelluvaan. 13 00:00:49,030 --> 00:00:51,330 Ja aiomme säilyttää että tekijä. 14 00:00:51,330 --> 00:00:55,180 Tämä ylimääräinen merkki on varmistaa että emme ole oikeastaan ​​syöttämällä 15 00:00:55,180 --> 00:00:59,200 jotain 1.4 ABC komentoriviltä. 16 00:00:59,200 --> 00:01:02,960 >> Nyt aiomme luoda joitakin aliaksia koska RV2 ja RV3 eivät ole 17 00:01:02,960 --> 00:01:04,310 erittäin hyödyllistä nimiä. 18 00:01:04,310 --> 00:01:07,660 Olemme sen sijaan menossa soittaa ne tiedostoon ja ulos tiedosto. 19 00:01:07,660 --> 00:01:11,580 Nyt aiomme varmistaa, että Meidän tekijä oli todella pätevä. 20 00:01:11,580 --> 00:01:16,330 Joten, jos kerroin on pienempi kuin tai yhtä suuri kuin nolla tai suurempi kuin 100, sitten kohti 21 00:01:16,330 --> 00:01:19,660 spec, meidän pitäisi hylätä että tekijä. 22 00:01:19,660 --> 00:01:23,890 >> Kun olemme varmoja se on hyvä, nyt voimme avaa n tiedoston, ja meidän on tehtävä 23 00:01:23,890 --> 00:01:25,950 varma, että se on onnistuneesti avattu. 24 00:01:25,950 --> 00:01:28,630 Jos se ei ole, että palaa null. 25 00:01:28,630 --> 00:01:30,390 Aiomme avata ulos tiedoston. 26 00:01:30,390 --> 00:01:33,420 Ja vielä, haluamme tarkista että se on onnistuneesti avattu. 27 00:01:33,420 --> 00:01:37,270 Ja jos se ei onnistunut avaamaan, niin meidän on myös muista sulkea 28 00:01:37,270 --> 00:01:40,870 n tiedosto, joka alun perin onnistuneesti avattu, tai muuten meillä on 29 00:01:40,870 --> 00:01:42,600 muisti vuotaa. 30 00:01:42,600 --> 00:01:46,350 >> Joten nyt aiomme lukea bittikartta tiedoston otsikko ja bitmap tiedot 31 00:01:46,350 --> 00:01:48,890 Pusku n tiedosto. 32 00:01:48,890 --> 00:01:52,360 Aiomme varmistaa, että n tiedosto oli voimassa bittikartta. 33 00:01:52,360 --> 00:01:52,640 OK. 34 00:01:52,640 --> 00:01:55,100 >> Joten nyt aiomme aloittaa tehdään joitakin muutoksia. 35 00:01:55,100 --> 00:01:58,840 Niin, koska aiomme olla muuttumassa asioita, haluamme ensin muistaa 36 00:01:58,840 --> 00:02:01,510 vanha leveys n tiedoston. 37 00:02:01,510 --> 00:02:05,160 Haluamme muistaa vanha täytteestä n tiedosto käyttämällä samaa laskentatapaa 38 00:02:05,160 --> 00:02:06,990 alkaen copy.c. 39 00:02:06,990 --> 00:02:09,840 >> Ja nyt me aiomme muuttaa bittikartta info otsikkoa. 40 00:02:09,840 --> 00:02:13,630 Ja niin me kertomalla sekä leveys ja korkeutta tekijä, koska 41 00:02:13,630 --> 00:02:15,750 sitähän me skaalaus. 42 00:02:15,750 --> 00:02:18,420 Aiomme selvittää uusi pehmuste tiedoston 43 00:02:18,420 --> 00:02:21,140 käyttämällä uutta leveys. 44 00:02:21,140 --> 00:02:27,330 Ja aiomme selvittää uuden koko kuvan käyttämällä useita 45 00:02:27,330 --> 00:02:31,610 tavut yhden rivin, joka on menossa olla määrä pikseleitä tuolla rivillä 46 00:02:31,610 --> 00:02:35,960 kertaa koko pikselin plus tavujen pehmuste lopussa 47 00:02:35,960 --> 00:02:40,310 Kyseisen rivin, ja kertomalla, että useissa rivien, että meillä on. 48 00:02:40,310 --> 00:02:43,800 Niin, että tavujen meillä on kuvadatan. 49 00:02:43,800 --> 00:02:48,190 >> Bf.Bfsize nyt tulee olemaan numero tavujen meidän kuva beta plus 50 00:02:48,190 --> 00:02:49,350 koko meidän otsikot. 51 00:02:49,350 --> 00:02:53,910 Joten plus koko bittikarttatiedostoa header ja koko bitmap info otsikon. 52 00:02:53,910 --> 00:02:54,510 OK. 53 00:02:54,510 --> 00:02:56,440 Niin, että se meidän otsikot. 54 00:02:56,440 --> 00:02:59,030 Voimme kirjoittaa tiedoston pään ja info header meidän ulos 55 00:02:59,030 --> 00:03:01,590 tiedostoon, ja olemme hyviä. 56 00:03:01,590 --> 00:03:03,800 >> Nyt on aika aloittaa itse kirjallisesti pikselin 57 00:03:03,800 --> 00:03:05,120 dataa ulos tiedoston. 58 00:03:05,120 --> 00:03:10,460 Aiomme julistaa puskurin koosta vanha leveys RGB kolminkertaistuu, ja olemme 59 00:03:10,460 --> 00:03:13,790 menossa julistaa muuttuja nimeltä rivi tunnoton, joka on aiomme 60 00:03:13,790 --> 00:03:15,640 alun perin yhtä negatiivinen 1. 61 00:03:15,640 --> 00:03:19,090 Saa nähdä, että aiomme käyttää että voidakseen seurata, mitä 62 00:03:19,090 --> 00:03:22,640 rivi Meillä on tällä hetkellä ladattu tähän puskuriin. 63 00:03:22,640 --> 00:03:23,290 OK. 64 00:03:23,290 --> 00:03:28,750 >> Joten nyt toisin kuin standard edition, sijaan iteroimalla haltuunsa vuonna 65 00:03:28,750 --> 00:03:32,900 tiedosto, aiomme kerrata kullakin rivi ulos tiedosto ja selvittää 66 00:03:32,900 --> 00:03:38,130 joka rivi tiedoston haluamme paikka tässä rivin pois tiedoston. 67 00:03:38,130 --> 00:03:44,930 Joten iteroimalla yli kaikki rivit ulos tiedoston uusi korkeus, olemme ensin 68 00:03:44,930 --> 00:03:48,890 menossa määrittää rivin vanhassa tiedostoon aiomme käyttää, jotka olemme 69 00:03:48,890 --> 00:03:53,560 aikoo tehdä ottamalla tämä nykyinen rivi jaettuna kertoimella. 70 00:03:53,560 --> 00:03:58,000 Niin että menee antaa meille rivi vanhan tiedoston, jota haluamme. 71 00:03:58,000 --> 00:04:03,310 >> Joten nyt jos rivi tunnoton ei ole sama vanha y, aiomme pitää lukea rivi 72 00:04:03,310 --> 00:04:05,940 että haluamme meidän nyk. rivi puskuriin. 73 00:04:05,940 --> 00:04:07,700 Niin miten me sen teemme? 74 00:04:07,700 --> 00:04:11,650 Ensin aiomme selvittää asema, joka alkaa joka rivillä 75 00:04:11,650 --> 00:04:13,100 alkuperäisen tiedoston. 76 00:04:13,100 --> 00:04:18,630 Siten, että asento tulee olemaan ohi meidän ylä-ja 77 00:04:18,630 --> 00:04:21,589 nyt viimeisen vanha y riviä. 78 00:04:21,589 --> 00:04:23,880 >> Ja niin kuinka monta tavua ovat yhden rivin? 79 00:04:23,880 --> 00:04:28,740 Jälleen koko RGB triple kertaa vanha leveys plus vanha pehmuste, niin se on 80 00:04:28,740 --> 00:04:30,640 tavujen yhden rivin. 81 00:04:30,640 --> 00:04:33,680 Ja haluamme ohittaa ne vanhat y riviä. 82 00:04:33,680 --> 00:04:37,580 Joten aiomme f etsimään ja olemme käyttäen pyritään asettaa aloittaa 83 00:04:37,580 --> 00:04:39,100 tiedoston alkuun. 84 00:04:39,100 --> 00:04:42,740 Aiomme f pyrkiä tähän asentoon tiedoston, laittoi meidät 85 00:04:42,740 --> 00:04:46,500 rivin alkuun haluamme lukea meidän puskuriin. 86 00:04:46,500 --> 00:04:48,510 >> Aiomme asettaa rivi tunnoton yhtä vanha y. 87 00:04:48,510 --> 00:04:53,080 Joten nyt jos me silmukka takaisin ja haluamme käyttää samalla rivillä meidän ulos tiedoston, 88 00:04:53,080 --> 00:04:55,970 niin emme aio lukea se uudelleen tarpeettomasti. 89 00:04:55,970 --> 00:04:59,310 Siis todella, rivi tunnoton on vain optimointia. 90 00:04:59,310 --> 00:05:05,500 >> Lopuksi, aiomme lukea osaksi nykyinen rivi vanhoja leveys RGB kolminkertaistaa 91 00:05:05,500 --> 00:05:08,040 että haluamme alkuperäisen tiedoston. 92 00:05:08,040 --> 00:05:12,270 Joten nyt nyk. rivi sisältää pikseleitä alkuperäisen tiedoston että haluamme 93 00:05:12,270 --> 00:05:14,200 kirjoittaa osaksi pois tiedoston. 94 00:05:14,200 --> 00:05:18,960 Joten nyt, aivan kuten edellä, sen sijaan että iteroimalla yli vanhan tiedoston, tarvitsemme 95 00:05:18,960 --> 00:05:22,560 se kerrata yli uusia tiedostoja rivit. 96 00:05:22,560 --> 00:05:27,450 Hyvin täällä, sen sijaan, että iteroimalla yli kaiken vanhan pikseliä että nyk. peräkkäin, 97 00:05:27,450 --> 00:05:31,210 haluamme kerrata hoitaakseen kaikki pikseliä meidän uusi tiedosto tähän 98 00:05:31,210 --> 00:05:32,480 Erityisesti rivi. 99 00:05:32,480 --> 00:05:34,140 >> Miksi haluamme tehdä niin? 100 00:05:34,140 --> 00:05:38,960 Koska näemme tässä, että emme ole itse välttämättä käytä kaikkia 101 00:05:38,960 --> 00:05:41,020 pikseleitä alkuperäisen tiedoston. 102 00:05:41,020 --> 00:05:46,630 Koska jos me kutistuu, saatamme todella haluavat ohittaa pikseliä. 103 00:05:46,630 --> 00:05:48,090 Ja me näemme, että tämä - 104 00:05:48,090 --> 00:05:49,690 x jaettuna kertoimella - 105 00:05:49,690 --> 00:05:55,620 muistuttavassa tänne jos sanomme y jaettuna kertoimella selvittää, että 106 00:05:55,620 --> 00:06:02,480 vanha y: nnen rivin vastaa y: nnen rivin tässä uudessa tiedostoon. 107 00:06:02,480 --> 00:06:05,880 >> Nyt aiomme kirjoittaa kaikki pikseleistä vanhasta rivi 108 00:06:05,880 --> 00:06:07,440 meidän uusi rivi. 109 00:06:07,440 --> 00:06:10,890 Kun olemme tehneet sen, meidän täytyy vain laita täyte lopussa meidän rivi 110 00:06:10,890 --> 00:06:15,540 Ja me silmukka takaisin ja jatkaa kaikki rivit meidän uusi tiedosto. 111 00:06:15,540 --> 00:06:19,390 Lopussa, meidän täytyy sulkea vanhoja tiedostoon, sulkea uuden tiedoston, ja paluu 112 00:06:19,390 --> 00:06:21,540 nolla, koska kaikki sujui hyvin. 113 00:06:21,540 --> 00:06:24,220 >> Nimeni on Rob ja tämä oli välitunti. 114 00:06:24,220 --> 00:06:29,184 >> [Musiikki soi]