1 00:00:00,000 --> 00:00:12,240 >> [Predvaja glasba] 2 00:00:12,240 --> 00:00:15,870 >> ROB Bowden: Živjo, jaz sem Rob, dajmo poskusite to na za velikost. 3 00:00:15,870 --> 00:00:21,100 Torej, spet se bo začela s v bistvu kopija copy.c, in 4 00:00:21,100 --> 00:00:22,860 narediti nekaj sprememb. 5 00:00:22,860 --> 00:00:26,280 Opomba takoj opazimo spremembo, kjer je Namesto preverjanje, da vidim, če 6 00:00:26,280 --> 00:00:30,440 argc ni enak 3, smo želeli preveriti če argc ni enako 4, od 7 00:00:30,440 --> 00:00:34,350 Zdaj smo ne samo ob v INFILE in outfile, vendar smo tudi ob v 8 00:00:34,350 --> 00:00:38,980 n, kar je znesek, ki smo luščenje izvirno sliko s. 9 00:00:38,980 --> 00:00:44,340 Ko smo prepričani, da smo lahko samo pretvorbo n na celo število pomočjo atoi. 10 00:00:44,340 --> 00:00:48,760 >> Torej, zdaj gremo ustvariti nekaj vzdevki, samo pokličite argv 2 INFILE, in 11 00:00:48,760 --> 00:00:54,240 argv 3 outfile, ker argv 2 in argv 3 niso zelo koristne imena. 12 00:00:54,240 --> 00:00:58,510 Zdaj želimo, da preverite, ali je n v mejah pričakujemo, da 13 00:00:58,510 --> 00:01:02,910 spec določa, da če je manjša ali enak nič, ali večja od 100, 14 00:01:02,910 --> 00:01:08,580 nato pa, da je neveljavna resize dejavnik, in bi morali opozoriti uporabnika na to. 15 00:01:08,580 --> 00:01:13,090 >> Ko bomo onkraj tega, da smo lahko končno odprli naše INFILE, zato moramo 16 00:01:13,090 --> 00:01:16,270 do napak, preverite, da odprtina ni ne iz nekega razloga. 17 00:01:16,270 --> 00:01:19,860 Prav tako moramo odpreti našo OUTFILE, in spet napaka preverite, da 18 00:01:19,860 --> 00:01:21,250 nisem ne iz nekega razloga. 19 00:01:21,250 --> 00:01:26,270 Vendar se prepričajte, če odprtje outfile ni uspelo, da smo morali zapreti 20 00:01:26,270 --> 00:01:29,040 INFILE, ki je že odprta. 21 00:01:29,040 --> 00:01:33,690 >> Torej, ob predpostavki, da ne bo propadel, potem mi bomo - tako kot v copy.c-- 22 00:01:33,690 --> 00:01:36,140 bom prebral v glavi od INFILE. 23 00:01:36,140 --> 00:01:40,130 Bomo prepričajte, da je veljavna bitna, zdaj pa bomo še nekaj 24 00:01:40,130 --> 00:01:41,620 stvari nekoliko drugače. 25 00:01:41,620 --> 00:01:44,870 Torej, najprej bomo želeli Spomnim se izvirno širino in višino 26 00:01:44,870 --> 00:01:48,290 v INFILE, ker gremo na se ga spreminja v izhodna_datoteka. 27 00:01:48,290 --> 00:01:53,890 Torej sedaj, ne pozabite, da za čudnih razlogov bi.biheight, je negativna, in 28 00:01:53,890 --> 00:01:58,670 tako da dejanska višina, pozitivna, smo želeli, da absolutno vrednost. 29 00:01:58,670 --> 00:02:02,580 >> Zdaj, oblazinjenje se bo enaka izračun, kot je bilo v copy.c, 30 00:02:02,580 --> 00:02:06,060 po stari širino, in zdaj smo dejansko dogaja, da spremenite 31 00:02:06,060 --> 00:02:07,320 , kar je v naši glavi. 32 00:02:07,320 --> 00:02:11,200 Torej bomo pomnožite našo širino, ki jih n, saj smo povečanje širine, ki jih 33 00:02:11,200 --> 00:02:15,100 n, pomnožite višino zn, ker smo luščenje zn, in zdaj imamo 34 00:02:15,100 --> 00:02:19,250 Izračun za novo oblazinjenje temelji na novi širine. 35 00:02:19,250 --> 00:02:21,840 >> Torej sedaj moramo spremeniti nekatere druga področja v naši glavi. 36 00:02:21,840 --> 00:02:26,890 Bi.biSizeImage naj bi Velikost vseh bajtov v pik 37 00:02:26,890 --> 00:02:28,520 in oblazinjenje slike. 38 00:02:28,520 --> 00:02:34,190 Tako velikost eni vrstici našega Slika je velikost RGB triple, velikost 39 00:02:34,190 --> 00:02:39,430 enega samega piksla, krat število točk zapored, plus oblazinjenje na 40 00:02:39,430 --> 00:02:40,910 konca vrste. 41 00:02:40,910 --> 00:02:45,200 In potem bomo pomnožite s Absolutna vrednost našega višine, da bi dobili 42 00:02:45,200 --> 00:02:48,350 Skupno število bajtov v slikovnih podatkov. 43 00:02:48,350 --> 00:02:53,050 bf.bfSize je samo skupno število bajtov v naših slikovnih podatkov, tako da 44 00:02:53,050 --> 00:02:56,530 bi.biSizeImage, plus velikost naših glavah. 45 00:02:56,530 --> 00:02:59,850 Torej, dodal na velikost datoteke bitnih Glava in velikost bitne slike info 46 00:02:59,850 --> 00:03:00,800 glava, OK. 47 00:03:00,800 --> 00:03:03,170 Tako da je vse, kar potrebujemo, da spremeniti v naših glavah. 48 00:03:03,170 --> 00:03:07,020 Sedaj bomo napisali glavo bitno datoteko na naše izhodna_datoteka, in naš info bitne 49 00:03:07,020 --> 00:03:09,880 Glava za naše izhodna_datoteka, in zdaj smo pripravljeni za začetek bo 50 00:03:09,880 --> 00:03:11,990 na dejansko pik. 51 00:03:11,990 --> 00:03:15,720 >> Tako želimo ponoviti čez skeniranih vrstic v INFILE je. 52 00:03:15,720 --> 00:03:17,730 Tako želimo ponoviti čez oldheight. 53 00:03:17,730 --> 00:03:20,830 To je razlog, zakaj smo potrebovali, da se spomnimo Prvotni višina, preden smo ga spremenite 54 00:03:20,830 --> 00:03:23,040 in ga zmanjšati s n. 55 00:03:23,040 --> 00:03:27,810 Zdaj bomo prebrali en sam vrstica INFILE v 56 00:03:27,810 --> 00:03:30,630 buffer velikosti oldwidth. 57 00:03:30,630 --> 00:03:36,190 Torej, tukaj, smo freading velikost RGB triple, en piksel, in staro širina 58 00:03:36,190 --> 00:03:39,760 jim od INFILE v naši buffer. 59 00:03:39,760 --> 00:03:43,480 In to se dogaja, da se celotna veslati v tem polju. 60 00:03:43,480 --> 00:03:50,390 Torej sedaj, želimo ponoviti n-krat na natisni to vrstico na naši izhodna_datoteka n-krat. 61 00:03:50,390 --> 00:03:52,510 In tako da je tisto, kar ta zanka počne. 62 00:03:52,510 --> 00:03:57,910 Ta notranja zanka ponavljanjem preko se vrstica, preko diod, tiskanje 63 00:03:57,910 --> 00:04:00,710 vsak pixel v matriki n-krat. 64 00:04:00,710 --> 00:04:04,510 Torej je Ničti element, ki se tiska n-krat, je prvi element čemer 65 00:04:04,510 --> 00:04:05,660 tiskani n-krat. 66 00:04:05,660 --> 00:04:10,820 In to je nekako, kako bomo vodoravno lestvico v izhodna_datoteka, in 67 00:04:10,820 --> 00:04:13,390 ta zanka, saj smo zanka n krat, je, kako bomo 68 00:04:13,390 --> 00:04:15,580 vertikalno lestvico. 69 00:04:15,580 --> 00:04:19,850 >> Tu spodaj, vidimo, da moramo dodati oblazinjenje na koncu vsake vrstice. 70 00:04:19,850 --> 00:04:25,050 Zato je to v notranjosti za zanke da je tiskanje z n vrstic samo 71 00:04:25,050 --> 00:04:28,400 to ena vrstica od INFILE. 72 00:04:28,400 --> 00:04:32,150 Potem sem dol, bom preskočiti oblazinjenje v INFILE, saj enkrat 73 00:04:32,150 --> 00:04:34,560 smo končali z eno vrsto INFILE, mi ni mar 74 00:04:34,560 --> 00:04:35,290 kaj je bilo oblazinjenje. 75 00:04:35,290 --> 00:04:37,110 Pravkar smo želeli priti na drugi vrsti. 76 00:04:37,110 --> 00:04:40,870 In potem bomo zanko nazaj in storiti vse Tudi to v drugi vrsti. 77 00:04:40,870 --> 00:04:44,406 >> Nazadnje, ko smo končali z vsem tem, lahko zaprete INFILE, blizu 78 00:04:44,406 --> 00:04:47,430 outfile, in povratek 0, ker smo končali. 79 00:04:47,430 --> 00:04:50,330 >> Moje ime je Rob, in to je bila velikost. 80 00:04:50,330 --> 00:04:54,934 >> [Predvaja glasba]