1 00:00:00,000 --> 00:00:12,240 >> [Muzikavimo] 2 00:00:12,240 --> 00:00:15,870 >> ROB Bowden: Sveiki, aš Robas, galime pabandykite tai jų dydį. 3 00:00:15,870 --> 00:00:21,100 Taigi, mes vėl ketiname pradėti iš esmės iš copy.c kopija, ir 4 00:00:21,100 --> 00:00:22,860 padaryti keletą pakeitimų. 5 00:00:22,860 --> 00:00:26,280 Pastaba karto matome pokyčius, kur vietoj patikrinti, pamatyti, jei 6 00:00:26,280 --> 00:00:30,440 argc nėra lygūs 3, norime patikrinti jei argc nėra lygi 4, nes 7 00:00:30,440 --> 00:00:34,350 Dabar mes ne tik atsižvelgiant į INFILE ir outfile, bet mes taip pat atsižvelgiant į 8 00:00:34,350 --> 00:00:38,980 n, tai suma, kurią mes mastelio originalų vaizdą. 9 00:00:38,980 --> 00:00:44,340 Kai mes tikri, kad mes galime tik konvertuoti n iki sveikojo skaičiaus, naudojant atoi. 10 00:00:44,340 --> 00:00:48,760 >> Taigi, dabar mes ketiname sukurti kai slapyvardžiai, tiesiog paskambinkite argv 2 INFILE ir 11 00:00:48,760 --> 00:00:54,240 argv 3 outfile, nes argv 2 ir argv 3 nėra labai naudinga, pavadinimus. 12 00:00:54,240 --> 00:00:58,510 Dabar mes norime įsitikinkite, n per greitai tikimės, todėl 13 00:00:58,510 --> 00:01:02,910 spec nurodoma, kad, jei jis mažesnis arba lygi nuliui, arba didesnis nei 100, 14 00:01:02,910 --> 00:01:08,580 tada tai negalioja resize veiksnys, ir mes turime įspėti, kad, kad vartotoją. 15 00:01:08,580 --> 00:01:13,090 >> Kai mes po visų, kad mes galime pagaliau atidaryti mūsų infile, ir mes turime 16 00:01:13,090 --> 00:01:16,270 klaidos įsitikinkite, kad atidarymas nepamiršo dėl kokios nors priežasties. 17 00:01:16,270 --> 00:01:19,860 Mums taip pat reikia atidaryti mūsų outfile ir vėl klaidos įsitikinkite, kad 18 00:01:19,860 --> 00:01:21,250 nepamiršo dėl kokios nors priežasties. 19 00:01:21,250 --> 00:01:26,270 Tačiau būkite tikri, jei iš atidarymo outfile nepavyko, kad mes reikia uždaryti 20 00:01:26,270 --> 00:01:29,040 INFILE, kuri jau buvo atidaryta. 21 00:01:29,040 --> 00:01:33,690 >> Taigi, darant prielaidą, kad nepamiršo, tada Labiausiai klausomos - tiesiog kaip copy.c-- 22 00:01:33,690 --> 00:01:36,140 ketinate skaityti antraštę iš INFILE. 23 00:01:36,140 --> 00:01:40,130 Mes ketiname įsitikinkite, kad tai galioja rastras, bet dabar mes ketiname padaryti kai 24 00:01:40,130 --> 00:01:41,620 viskas šiek tiek kitaip. 25 00:01:41,620 --> 00:01:44,870 Taigi, pirmiausia, mes ketiname norite prisiminti originalų plotį ir aukštį 26 00:01:44,870 --> 00:01:48,290 iš INFILE, nes mes ketiname keičiasi jį už outfile. 27 00:01:48,290 --> 00:01:53,890 Taigi dabar prisimenu, kad keistų priežasčių bi.biheight, yra neigiamas, ir 28 00:01:53,890 --> 00:01:58,670 todėl faktinis aukštis, ir teigiamas, mes nori imtis absoliučią vertę. 29 00:01:58,670 --> 00:02:02,580 >> Dabar, apdaila bus tas pats Apskaičiuojant, kaip tai buvo copy.c, 30 00:02:02,580 --> 00:02:06,060 naudojate seną plotį, ir dabar mes tikrųjų ketiname pakeisti 31 00:02:06,060 --> 00:02:07,320 Kas mūsų antraštėje. 32 00:02:07,320 --> 00:02:11,200 Taigi, mes ketiname dauginti mūsų plotį n, nes mes mastelio plotį 33 00:02:11,200 --> 00:02:15,100 n, padauginkite aukštį n, nes mes padidinant iš n, ir dabar mes turime 34 00:02:15,100 --> 00:02:19,250 naujos išklojimui skaičiavimas pagal naują pločio. 35 00:02:19,250 --> 00:02:21,840 >> Taigi dabar mes turime pakeisti kai kitų sričių mūsų antraštėje. 36 00:02:21,840 --> 00:02:26,890 Bi.biSizeImage turėtų būti dydis visų pikselių baitų 37 00:02:26,890 --> 00:02:28,520 ir apdaila iš paveikslėlio. 38 00:02:28,520 --> 00:02:34,190 Ir taip vieną eilutę iš mūsų dydis vaizdas yra dydžio RGB triviečiai, dydis 39 00:02:34,190 --> 00:02:39,430 iš vieno pikselio, kartų skaičiaus taškų iš eilės, plius ne prikimšti 40 00:02:39,430 --> 00:02:40,910 iš eilės pabaigos. 41 00:02:40,910 --> 00:02:45,200 Ir tada mes ketiname daugintis, kad absoliuti vertybė mūsų aukštyje gauti 42 00:02:45,200 --> 00:02:48,350 bendras baitų skaičius ir vaizdo duomenų. 43 00:02:48,350 --> 00:02:53,050 bf.bfSize yra tik bendras skaičius baitų mūsų vaizdiniai duomenys, todėl 44 00:02:53,050 --> 00:02:56,530 bi.biSizeImage plius dydis mūsų antraštes. 45 00:02:56,530 --> 00:02:59,850 Taigi, pridedant į bitmap failo dydis antraštėje, o dydis bitmap info 46 00:02:59,850 --> 00:03:00,800 antraštė, Gerai. 47 00:03:00,800 --> 00:03:03,170 Štai viskas, ką reikia keisti mūsų antraštes. 48 00:03:03,170 --> 00:03:07,020 Dabar mes rašyti bitmap failo antraštę mūsų outfile ir mūsų bitmap info 49 00:03:07,020 --> 00:03:09,880 header mūsų outfile, o dabar mes pasiruošę pradėti vyksta 50 00:03:09,880 --> 00:03:11,990 per faktinių pikselių. 51 00:03:11,990 --> 00:03:15,720 >> Taigi, mes norime pakartoti per į infile savo nuskaitymo eilučių. 52 00:03:15,720 --> 00:03:17,730 Taigi, mes norime pakartoti per oldheight. 53 00:03:17,730 --> 00:03:20,830 Štai kodėl mums reikia prisiminti, originalus aukštis, kol mes jį pakeisti 54 00:03:20,830 --> 00:03:23,040 ir masto jį n. 55 00:03:23,040 --> 00:03:27,810 Dabar mes ketiname skaityti vieno eilutė INFILE į 56 00:03:27,810 --> 00:03:30,630 buferio dydis oldwidth. 57 00:03:30,630 --> 00:03:36,190 Taigi čia mes freading dydis RGB triviečiai, vienas pikselis, ir seni plotis 58 00:03:36,190 --> 00:03:39,760 juos iš INFILE į mūsų buferis. 59 00:03:39,760 --> 00:03:43,480 Ir tai bus visa eilutėje šiame masyve. 60 00:03:43,480 --> 00:03:50,390 Taigi, dabar mes norime pakartoti n kartų spausdinti šią eilutę į mūsų outfile n kartų. 61 00:03:50,390 --> 00:03:52,510 Ir todėl, kad tai, ką šis ciklas daro. 62 00:03:52,510 --> 00:03:57,910 Šis vidinis kontūras iteravimu per eilutėje pati, per masyvo, spauda 63 00:03:57,910 --> 00:04:00,710 kiekvienas pikselis masyve n kartų. 64 00:04:00,710 --> 00:04:04,510 Taigi nulinis elementas yra atspausdintas n kartų, pirmasis elementas yra 65 00:04:04,510 --> 00:04:05,660 atspausdintas n kartų. 66 00:04:05,660 --> 00:04:10,820 Ir tai tarsi kaip mes ketiname horizontaliai mastelį į outfile ir 67 00:04:10,820 --> 00:04:13,390 šis ciklas, nes mes kilpų n kartų, tai, kaip mes ketiname 68 00:04:13,390 --> 00:04:15,580 vertikaliai skalė. 69 00:04:15,580 --> 00:04:19,850 >> Žemyn čia matome, kad mes turime pridėti kiekvienos eilutės pabaigoje apdaila. 70 00:04:19,850 --> 00:04:25,050 Štai kodėl tai yra dėl kilpa viduje tai atspausdinti visas gautas n eilučių tiesiog 71 00:04:25,050 --> 00:04:28,400 tai viena eilutė iš INFILE. 72 00:04:28,400 --> 00:04:32,150 Tada žemyn čia, aš ruošiuosi praleisti į INFILE apdaila, nes kai 73 00:04:32,150 --> 00:04:34,560 baigsime su vienu eilės INFILE, mes nerūpi 74 00:04:34,560 --> 00:04:35,290 kas prikimšti buvo. 75 00:04:35,290 --> 00:04:37,110 Mes tiesiog norime patekti į antrą eilutę. 76 00:04:37,110 --> 00:04:40,870 Ir tada mes kilpa atgal ir padaryti viską, tai vėl antroje eilėje. 77 00:04:40,870 --> 00:04:44,406 >> Galiausiai, kai baigsime su visais, kad, mes galime uždaryti infile, netoli 78 00:04:44,406 --> 00:04:47,430 outfile ir grąžinimas 0, nes mes padaryti. 79 00:04:47,430 --> 00:04:50,330 >> Mano vardas yra Rob, ir tai buvo resize. 80 00:04:50,330 --> 00:04:54,934 >> [Muzikavimo]