1 00:00:00,000 --> 00:00:12,240 >> [Muusika mängib] 2 00:00:12,240 --> 00:00:15,870 >> ROB BOWDEN: Tere, ma olen Rob, olgem proovige seda selga. 3 00:00:15,870 --> 00:00:21,100 Niisiis, me oleme jälle lähed alustada põhiliselt koopia copy.c ja 4 00:00:21,100 --> 00:00:22,860 teha mõningaid muudatusi. 5 00:00:22,860 --> 00:00:26,280 Märkus kohe näeme muutusi, kui selle asemel, et kontrollida, kas 6 00:00:26,280 --> 00:00:30,440 argc ei võrdu 3, me tahame, et kontrollida kui argc ei võrdu 4, kuna 7 00:00:30,440 --> 00:00:34,350 Nüüd me ei ole ainult võtmine infile ja outfile, kuid me ka võtmine 8 00:00:34,350 --> 00:00:38,980 n, mis on summa, mis me oleme tagi originaalpildi. 9 00:00:38,980 --> 00:00:44,340 Kui oleme kindlad, et saame lihtsalt teisendada n täisarv kasutades atoi. 10 00:00:44,340 --> 00:00:48,760 >> Nii, nüüd me ei kavatse luua mingit varjunimed, helistage argv 2 infile ja 11 00:00:48,760 --> 00:00:54,240 argv 3 outfile, sest argv 2 ja argv 3 ei ole väga kasulik nimed. 12 00:00:54,240 --> 00:00:58,510 Nüüd tahame veenduge, n on piires eeldame, et 13 00:00:58,510 --> 00:01:02,910 spec ette, et kui see on väiksem või null, või suurem kui 100, 14 00:01:02,910 --> 00:01:08,580 siis see on kehtetu resize tegur, ja me peaks hoiatama kasutaja seda. 15 00:01:08,580 --> 00:01:13,090 >> Kui me pärast kõik, et suudame lõpuks avada meie infile ja peame 16 00:01:13,090 --> 00:01:16,270 viga veenduge, et avamine ei õnnestu mingil põhjusel. 17 00:01:16,270 --> 00:01:19,860 Samuti on meil vaja, et avada meie outfile ja jälle viga veenduge, et 18 00:01:19,860 --> 00:01:21,250 ei suuda mingil põhjusel. 19 00:01:21,250 --> 00:01:26,270 Aga kindlasti, kui avamine outfile ebaõnnestunud, et me peame sulgema 20 00:01:26,270 --> 00:01:29,040 infile, mis oli juba alanud. 21 00:01:29,040 --> 00:01:33,690 >> Seega eeldades, et ei suuda, siis Me - just nagu copy.c-- 22 00:01:33,690 --> 00:01:36,140 loen päises alates infile. 23 00:01:36,140 --> 00:01:40,130 Me veenduge, et see on kehtiv bitmap, aga nüüd me teeme mõned 24 00:01:40,130 --> 00:01:41,620 asjad natuke teistmoodi. 25 00:01:41,620 --> 00:01:44,870 Nii et esimene, me tahame mäleta originaal laius ja kõrgus 26 00:01:44,870 --> 00:01:48,290 Euroopa infile, sest me ei kavatse muutumas see outfile. 27 00:01:48,290 --> 00:01:53,890 Nüüd pidage meeles, et kummaline põhjustel bi.biheight, on negatiivne ning 28 00:01:53,890 --> 00:01:58,670 nii et tegelik kõrgus on positiivne, me tahame võtta absoluutväärtus. 29 00:01:58,670 --> 00:02:02,580 >> Nüüd padding saab olema sama arvutamisel, kui see oli copy.c, 30 00:02:02,580 --> 00:02:06,060 kasutades vana laius, ja nüüd me oleme tegelikult muutu 31 00:02:06,060 --> 00:02:07,320 Mis on meie päises. 32 00:02:07,320 --> 00:02:11,200 Nii et me korrutame meie laiuse n, sest me tagi laiuse 33 00:02:11,200 --> 00:02:15,100 n, korrutada kõrgus n, sest me oleme tagi n, ja nüüd on meil 34 00:02:15,100 --> 00:02:19,250 arvutamise uus polster põhineb uute laiusega. 35 00:02:19,250 --> 00:02:21,840 >> Nüüd peame muutma mõningaid teistes valdkondades meie kaudu. 36 00:02:21,840 --> 00:02:26,890 Bi.biSizeImage peaks olema suurus kõikide baitide pikslit 37 00:02:26,890 --> 00:02:28,520 ja polstrist pilt. 38 00:02:28,520 --> 00:02:34,190 Ja nii suuruse ühte rida meie pilt on suurusega RGB kolmekordne suurus 39 00:02:34,190 --> 00:02:39,430 ühe piksli korda rohkem pikslite rida pluss polster 40 00:02:39,430 --> 00:02:40,910 lõppu reas. 41 00:02:40,910 --> 00:02:45,200 Ja siis me korrutame selle poolt absoluutväärtus meie kõrgus saada 42 00:02:45,200 --> 00:02:48,350 baitide kujutise andmetes. 43 00:02:48,350 --> 00:02:53,050 bf.bfSize on lihtsalt koguarv baitide meie kujutise andmeid, et 44 00:02:53,050 --> 00:02:56,530 bi.biSizeImage pluss suurus meie päised. 45 00:02:56,530 --> 00:02:59,850 Niisiis, lisades suurusest bitmap faili päise ja suurus bitmap info 46 00:02:59,850 --> 00:03:00,800 header, OK. 47 00:03:00,800 --> 00:03:03,170 Nii et kõik me peame muuta meie päised. 48 00:03:03,170 --> 00:03:07,020 Nüüd me kirjutada bitmap faili päis meie outfile ja meie bitmap info 49 00:03:07,020 --> 00:03:09,880 header meie outfile ja nüüd Me oleme valmis alustama läheb 50 00:03:09,880 --> 00:03:11,990 üle tegelik pikslit. 51 00:03:11,990 --> 00:03:15,720 >> Nii et me tahame Käi infile skaneerimise read. 52 00:03:15,720 --> 00:03:17,730 Nii et me tahame Käi oldheight. 53 00:03:17,730 --> 00:03:20,830 See on põhjus, miks meil on vaja meeles pidada, algne kõrgus, enne kui me seda muuta 54 00:03:20,830 --> 00:03:23,040 ja suurendasime seda n. 55 00:03:23,040 --> 00:03:27,810 Nüüd me ei kavatse lugeda ühe reas infile sisse 56 00:03:27,810 --> 00:03:30,630 puhverala suurus oldwidth. 57 00:03:30,630 --> 00:03:36,190 Nii et siin me oleme freading suurus RGB kolmekordne, üks piksel ja vana laius 58 00:03:36,190 --> 00:03:39,760 neid infile meie puhvris. 59 00:03:39,760 --> 00:03:43,480 Ja see saab olema kogu rida see massiiv. 60 00:03:43,480 --> 00:03:50,390 Nüüd tahame kinnitada, n korda prindi see rida meie outfile n korda. 61 00:03:50,390 --> 00:03:52,510 Ja nii see on, mida see silmus teeb. 62 00:03:52,510 --> 00:03:57,910 See sisemine loop on iterating üle rida iseenesest üle massiivi, trükkimine 63 00:03:57,910 --> 00:04:00,710 iga piksli massiivi n korda. 64 00:04:00,710 --> 00:04:04,510 Nii nullis element on trükitud n korda, esimene element on 65 00:04:04,510 --> 00:04:05,660 trükitud n korda. 66 00:04:05,660 --> 00:04:10,820 Ja see on omamoodi kuidas me horisontaalselt skaala outfile ja 67 00:04:10,820 --> 00:04:13,390 see loop, sest me silmukoiminen n korda, on see, kuidas me 68 00:04:13,390 --> 00:04:15,580 vertikaalselt skaalal. 69 00:04:15,580 --> 00:04:19,850 >> Siia alla, näeme, et meil on vaja lisada polster iga rea ​​lõpus. 70 00:04:19,850 --> 00:04:25,050 Sellepärast on see sees loop mis on väljatrükk n rida ainult 71 00:04:25,050 --> 00:04:28,400 see rida alates infile. 72 00:04:28,400 --> 00:04:32,150 Siis siin, ma lähen vahele jätta polstri infile, sest kui 73 00:04:32,150 --> 00:04:34,560 me teha üks rida infile, me ei hooli 74 00:04:34,560 --> 00:04:35,290 mida polster oli. 75 00:04:35,290 --> 00:04:37,110 Me lihtsalt tahame, et saada teine ​​rida. 76 00:04:37,110 --> 00:04:40,870 Ja siis me loop tagasi ja teha kõik see jälle teises reas. 77 00:04:40,870 --> 00:04:44,406 >> Lõpuks, kui me teinud kõik, et saame sulgeda infile lähedal 78 00:04:44,406 --> 00:04:47,430 outfile ja tagastamine 0, sest me oleme valmis. 79 00:04:47,430 --> 00:04:50,330 >> Minu nimi on Rob ja see oli resize. 80 00:04:50,330 --> 00:04:54,934 >> [Muusika mängib]