1 00:00:00,000 --> 00:00:12,240 >> [Tónlist spila] 2 00:00:12,240 --> 00:00:15,870 >> ROB Bowden: Hæ, ég er Rob skulum reyna þetta á fyrir stærð. 3 00:00:15,870 --> 00:00:21,100 Svo erum við aftur að fara að byrja með grundvallaratriðum afrit af copy.c og 4 00:00:21,100 --> 00:00:22,860 gera nokkrar breytingar. 5 00:00:22,860 --> 00:00:26,280 Athugið strax við sjá breytingar, sem í stað þess að stöðva til að sjá hvort 6 00:00:26,280 --> 00:00:30,440 argc ekki jafn 3, við viljum að athuga ef argc ekki jafn 4, þar 7 00:00:30,440 --> 00:00:34,350 nú erum við ekki bara að taka í INFILE og OUTFILE, en við erum líka að taka á 8 00:00:34,350 --> 00:00:38,980 n, sem er sú upphæð sem við erum stigstærð upprunalegu myndina með. 9 00:00:38,980 --> 00:00:44,340 Þegar við erum viss um að við getum bara umbreyta n heiltala með atoi. 10 00:00:44,340 --> 00:00:48,760 >> Svo, nú erum við að fara að búa til sumir samheiti, bara hringja argv 2 INFILE, og 11 00:00:48,760 --> 00:00:54,240 argv 3 OUTFILE, því argv 2 og argv 3 eru ekki mjög gagnlegar nöfn. 12 00:00:54,240 --> 00:00:58,510 Nú viljum við að ganga úr skugga n er innan þeirra marka sem við búast við, þannig að 13 00:00:58,510 --> 00:01:02,910 sérstakur tilgreinir að ef það er minna en eða jöfn með núlli, eða meiri en 100, 14 00:01:02,910 --> 00:01:08,580 þá er það ógilt Búa þáttur, og við ættum að vara notandann um það. 15 00:01:08,580 --> 00:01:13,090 >> Þegar við erum utan allt það, við getum loksins opna INFILE okkar, og við þurfum 16 00:01:13,090 --> 00:01:16,270 til villa stöðva til að tryggja að opnun ekki mistakast af einhverjum ástæðum. 17 00:01:16,270 --> 00:01:19,860 Við þurfum einnig að opna OUTFILE okkar, og aftur villa athuga til að tryggja að 18 00:01:19,860 --> 00:01:21,250 ekki mistakast af einhverjum ástæðum. 19 00:01:21,250 --> 00:01:26,270 En vera viss um að ef opnun á OUTFILE mistókst að við þurfum að loka 20 00:01:26,270 --> 00:01:29,040 á INFILE, sem var þegar opnað. 21 00:01:29,040 --> 00:01:33,690 >> Svo, miðað við að ekki mistakast, þá Vid - eins copy.c-- 22 00:01:33,690 --> 00:01:36,140 að fara að lesa í hausinn frá INFILE. 23 00:01:36,140 --> 00:01:40,130 Við erum að fara að ganga úr skugga um það er í gildi punktamynd, en nú erum við að fara að gera sumir 24 00:01:40,130 --> 00:01:41,620 hlutina aðeins öðruvísi. 25 00:01:41,620 --> 00:01:44,870 Svo fyrst, við erum að fara til að vilja muna upprunalega breidd og hæð 26 00:01:44,870 --> 00:01:48,290 af INFILE, vegna þess að við erum að fara að að breyta því fyrir OUTFILE. 27 00:01:48,290 --> 00:01:53,890 Svo nú man að fyrir undarlegum ástæðum bi.biheight, er neikvætt, og 28 00:01:53,890 --> 00:01:58,670 svo í raun hæð, í jákvætt, við vilja til að taka algildi. 29 00:01:58,670 --> 00:02:02,580 >> Nú, padding er að fara til vera the sami útreikning eins og það var í copy.c, 30 00:02:02,580 --> 00:02:06,060 nota gamla breidd, og nú erum við í raun að fara að breyta 31 00:02:06,060 --> 00:02:07,320 Hvað er í hausnum okkar. 32 00:02:07,320 --> 00:02:11,200 Þannig að við erum að fara að margfalda breidd okkar með n, þar sem við erum stigstærð breiddina með 33 00:02:11,200 --> 00:02:15,100 n, margfalda hæð með n, þar sem við erum stigstærð af n, og nú höfum við 34 00:02:15,100 --> 00:02:19,250 útreikning fyrir nýja padding byggt á nýju breidd. 35 00:02:19,250 --> 00:02:21,840 >> Svo nú þurfum við að breyta einhverju öðrum sviðum í haus okkar. 36 00:02:21,840 --> 00:02:26,890 Bi.biSizeImage er ætlað að vera stærð allra bæti í dílar 37 00:02:26,890 --> 00:02:28,520 og padding á myndinni. 38 00:02:28,520 --> 00:02:34,190 Og svo á stærð við einni röð af okkar Mynd er stærð af RGB þrefaldur, stærð 39 00:02:34,190 --> 00:02:39,430 af a einn pixla, sinnum fjöldi punktar í röð, auk padding á 40 00:02:39,430 --> 00:02:40,910 í lok röð. 41 00:02:40,910 --> 00:02:45,200 Og þá ætlum við að margfalda það með algildi hæð okkar til að fá 42 00:02:45,200 --> 00:02:48,350 heildarfjölda bæti í myndgagna. 43 00:02:48,350 --> 00:02:53,050 bf.bfSize er bara heildarfjöldi bæti í gögnum ímynd okkar, svo 44 00:02:53,050 --> 00:02:56,530 bi.biSizeImage, auk stærð hausa okkar. 45 00:02:56,530 --> 00:02:59,850 Svo að bæta á the stærð af punktamynd skrá haus, og stærð punktamynd upplýsingar 46 00:02:59,850 --> 00:03:00,800 haus, OK. 47 00:03:00,800 --> 00:03:03,170 Svo það er allt sem við þurfum að breyta í haus okkar. 48 00:03:03,170 --> 00:03:07,020 Nú munum við skrifa punktamynd skrá haus til OUTFILE okkar, og upplýsa okkar punktamynd 49 00:03:07,020 --> 00:03:09,880 haus að OUTFILE okkar, og nú við erum tilbúin til að byrja að fara 50 00:03:09,880 --> 00:03:11,990 á raunverulegum dílar. 51 00:03:11,990 --> 00:03:15,720 >> Þannig að við viljum að iterate yfir á INFILE er grannskoða línur. 52 00:03:15,720 --> 00:03:17,730 Þannig að við viljum að iterate yfir oldheight. 53 00:03:17,730 --> 00:03:20,830 Þetta er ástæða þess að við þurftum að muna upprunalega hæð, áður en við að breyta því 54 00:03:20,830 --> 00:03:23,040 og minnkaðar það með n. 55 00:03:23,040 --> 00:03:27,810 Nú erum við að fara að lesa einn röðinni í INFILE inn í 56 00:03:27,810 --> 00:03:30,630 biðminni stærð oldwidth. 57 00:03:30,630 --> 00:03:36,190 Svo hér erum við freading stærð RGB þrefaldur, einn pixla, og gamla breidd 58 00:03:36,190 --> 00:03:39,760 þá frá INFILE í biðminni okkar. 59 00:03:39,760 --> 00:03:43,480 Og það er að fara að vera heilt róa í þessu fylki. 60 00:03:43,480 --> 00:03:50,390 Svo nú viljum við að iterate n sinnum til prenta þessa röð til OUTFILE okkar n sinnum. 61 00:03:50,390 --> 00:03:52,510 Og svo er það það sem þetta lykkja er að gera. 62 00:03:52,510 --> 00:03:57,910 Þessi innri lykkja er iterating yfir róa sig, yfir í fylkinu, prentun 63 00:03:57,910 --> 00:04:00,710 Hver pixla í array n sinnum. 64 00:04:00,710 --> 00:04:04,510 Svo 0 þátturinn er verið að prenta n sinnum, fyrsti þáttur er að vera 65 00:04:04,510 --> 00:04:05,660 prentuð n sinnum. 66 00:04:05,660 --> 00:04:10,820 Og það er svoleiðis hvernig við ætlum að lárétt í upp OUTFILE og 67 00:04:10,820 --> 00:04:13,390 þetta lykkja, þar sem við erum lykkja n sinnum, er hvernig við erum að fara að 68 00:04:13,390 --> 00:04:15,580 lóðrétt mælikvarða. 69 00:04:15,580 --> 00:04:19,850 >> Hérna sjáum við að við þurfum að bæta padding í lok hvers röð. 70 00:04:19,850 --> 00:04:25,050 Þessi 'hvers vegna þetta er inni í for lykkju sem er prentun út n raðirnar bara 71 00:04:25,050 --> 00:04:28,400 þetta ein röð frá INFILE. 72 00:04:28,400 --> 00:04:32,150 Þá niður hérna, ég er að fara að sleppa yfir padding í INFILE, síðan einu sinni 73 00:04:32,150 --> 00:04:34,560 við erum búin með eina röð af INFILE, eigum við ekki sama um 74 00:04:34,560 --> 00:04:35,290 hvað padding var. 75 00:04:35,290 --> 00:04:37,110 Við viljum bara að komast að annarri röð. 76 00:04:37,110 --> 00:04:40,870 Og þá munum við lykkja til baka og gera allt þetta aftur fyrir annarri röðinni. 77 00:04:40,870 --> 00:04:44,406 >> Að lokum, þegar við erum búin með allt sem, við getum loka INFILE, nálægt 78 00:04:44,406 --> 00:04:47,430 á OUTFILE og aftur 0 vegna þess að við erum að gera. 79 00:04:47,430 --> 00:04:50,330 >> Mitt nafn er Rob, og þetta var Resize. 80 00:04:50,330 --> 00:04:54,934 >> [Tónlist spila]