>> [Musiikki soi]
>> ROB BOWDEN: Hei.
Olen Rob ja anna koon tätä ongelmaa.
Joten aiomme aloittaa copy.c kuin malli, mutta aiomme olla
tekee melko muutamia muutoksia.
>> Nyt näemme olemme välittömästi tehdä muuttaa minne olemme enää tarkistaa
meidän RXC ei equal 3, mutta nyt me tarkastamme rc ei equal 4.
Koska haluamme myös sisältyä Lisäksi tiedostojen ja ulos tiedostoja
argumentteja, F, joka tulee olemaan tämän kerroin, jolla olemme skaalaus.
>> Joten kun olemme varmoja, että haluamme käyttää s scan f muuntaa merkkijonon
argv1 kelluvaan.
Ja aiomme säilyttää että tekijä.
Tämä ylimääräinen merkki on varmistaa että emme ole oikeastaan ​​syöttämällä
jotain 1.4 ABC komentoriviltä.
>> Nyt aiomme luoda joitakin aliaksia koska RV2 ja RV3 eivät ole
erittäin hyödyllistä nimiä.
Olemme sen sijaan menossa soittaa ne tiedostoon ja ulos tiedosto.
Nyt aiomme varmistaa, että Meidän tekijä oli todella pätevä.
Joten, jos kerroin on pienempi kuin tai yhtä suuri kuin nolla tai suurempi kuin 100, sitten kohti
spec, meidän pitäisi hylätä että tekijä.
>> Kun olemme varmoja se on hyvä, nyt voimme avaa n tiedoston, ja meidän on tehtävä
varma, että se on onnistuneesti avattu.
Jos se ei ole, että palaa null.
Aiomme avata ulos tiedoston.
Ja vielä, haluamme tarkista että se on onnistuneesti avattu.
Ja jos se ei onnistunut avaamaan, niin meidän on myös muista sulkea
n tiedosto, joka alun perin onnistuneesti avattu, tai muuten meillä on
muisti vuotaa.
>> Joten nyt aiomme lukea bittikartta tiedoston otsikko ja bitmap tiedot
Pusku n tiedosto.
Aiomme varmistaa, että n tiedosto oli voimassa bittikartta.
OK.
>> Joten nyt aiomme aloittaa tehdään joitakin muutoksia.
Niin, koska aiomme olla muuttumassa asioita, haluamme ensin muistaa
vanha leveys n tiedoston.
Haluamme muistaa vanha täytteestä n tiedosto käyttämällä samaa laskentatapaa
alkaen copy.c.
>> Ja nyt me aiomme muuttaa bittikartta info otsikkoa.
Ja niin me kertomalla sekä leveys ja korkeutta tekijä, koska
sitähän me skaalaus.
Aiomme selvittää uusi pehmuste tiedoston
käyttämällä uutta leveys.
Ja aiomme selvittää uuden koko kuvan käyttämällä useita
tavut yhden rivin, joka on menossa olla määrä pikseleitä tuolla rivillä
kertaa koko pikselin plus tavujen pehmuste lopussa
Kyseisen rivin, ja kertomalla, että useissa rivien, että meillä on.
Niin, että tavujen meillä on kuvadatan.
>> Bf.Bfsize nyt tulee olemaan numero tavujen meidän kuva beta plus
koko meidän otsikot.
Joten plus koko bittikarttatiedostoa header ja koko bitmap info otsikon.
OK.
Niin, että se meidän otsikot.
Voimme kirjoittaa tiedoston pään ja info header meidän ulos
tiedostoon, ja olemme hyviä.
>> Nyt on aika aloittaa itse kirjallisesti pikselin
dataa ulos tiedoston.
Aiomme julistaa puskurin koosta vanha leveys RGB kolminkertaistuu, ja olemme
menossa julistaa muuttuja nimeltä rivi tunnoton, joka on aiomme
alun perin yhtä negatiivinen 1.
Saa nähdä, että aiomme käyttää että voidakseen seurata, mitä
rivi Meillä on tällä hetkellä ladattu tähän puskuriin.
OK.
>> Joten nyt toisin kuin standard edition, sijaan iteroimalla haltuunsa vuonna
tiedosto, aiomme kerrata kullakin rivi ulos tiedosto ja selvittää
joka rivi tiedoston haluamme paikka tässä rivin pois tiedoston.
Joten iteroimalla yli kaikki rivit ulos tiedoston uusi korkeus, olemme ensin
menossa määrittää rivin vanhassa tiedostoon aiomme käyttää, jotka olemme
aikoo tehdä ottamalla tämä nykyinen rivi jaettuna kertoimella.
Niin että menee antaa meille rivi vanhan tiedoston, jota haluamme.
>> Joten nyt jos rivi tunnoton ei ole sama vanha y, aiomme pitää lukea rivi
että haluamme meidän nyk. rivi puskuriin.
Niin miten me sen teemme?
Ensin aiomme selvittää asema, joka alkaa joka rivillä
alkuperäisen tiedoston.
Siten, että asento tulee olemaan ohi meidän ylä-ja
nyt viimeisen vanha y riviä.
>> Ja niin kuinka monta tavua ovat yhden rivin?
Jälleen koko RGB triple kertaa vanha leveys plus vanha pehmuste, niin se on
tavujen yhden rivin.
Ja haluamme ohittaa ne vanhat y riviä.
Joten aiomme f etsimään ja olemme käyttäen pyritään asettaa aloittaa
tiedoston alkuun.
Aiomme f pyrkiä tähän asentoon tiedoston, laittoi meidät
rivin alkuun haluamme lukea meidän puskuriin.
>> Aiomme asettaa rivi tunnoton yhtä vanha y.
Joten nyt jos me silmukka takaisin ja haluamme käyttää samalla rivillä meidän ulos tiedoston,
niin emme aio lukea se uudelleen tarpeettomasti.
Siis todella, rivi tunnoton on vain optimointia.
>> Lopuksi, aiomme lukea osaksi nykyinen rivi vanhoja leveys RGB kolminkertaistaa
että haluamme alkuperäisen tiedoston.
Joten nyt nyk. rivi sisältää pikseleitä alkuperäisen tiedoston että haluamme
kirjoittaa osaksi pois tiedoston.
Joten nyt, aivan kuten edellä, sen sijaan että iteroimalla yli vanhan tiedoston, tarvitsemme
se kerrata yli uusia tiedostoja rivit.
Hyvin täällä, sen sijaan, että iteroimalla yli kaiken vanhan pikseliä että nyk. peräkkäin,
haluamme kerrata hoitaakseen kaikki pikseliä meidän uusi tiedosto tähän
Erityisesti rivi.
>> Miksi haluamme tehdä niin?
Koska näemme tässä, että emme ole itse välttämättä käytä kaikkia
pikseleitä alkuperäisen tiedoston.
Koska jos me kutistuu, saatamme todella haluavat ohittaa pikseliä.
Ja me näemme, että tämä -
x jaettuna kertoimella -
muistuttavassa tänne jos sanomme y jaettuna kertoimella selvittää, että
vanha y: nnen rivin vastaa y: nnen rivin tässä uudessa tiedostoon.
>> Nyt aiomme kirjoittaa kaikki pikseleistä vanhasta rivi
meidän uusi rivi.
Kun olemme tehneet sen, meidän täytyy vain laita täyte lopussa meidän rivi
Ja me silmukka takaisin ja jatkaa kaikki rivit meidän uusi tiedosto.
Lopussa, meidän täytyy sulkea vanhoja tiedostoon, sulkea uuden tiedoston, ja paluu
nolla, koska kaikki sujui hyvin.
>> Nimeni on Rob ja tämä oli välitunti.
>> [Musiikki soi]