1 00:00:00,000 --> 00:00:12,240 >> [MUSIC nagpe-play] 2 00:00:12,240 --> 00:00:15,870 >> Rob BOWDEN: Hi, Ako Rob, sabihin subukan ito sa para sa laki. 3 00:00:15,870 --> 00:00:21,100 Kaya, muli kami ay pagpunta sa magsimula sa isa lamang kopya ng copy.c, at 4 00:00:21,100 --> 00:00:22,860 gumawa ng ilang pagbabago. 5 00:00:22,860 --> 00:00:26,280 Tandaan agad makita namin ang isang pagbabago, kung saan sa halip ng pag-check upang makita kung 6 00:00:26,280 --> 00:00:30,440 argc ay hindi katumbas 3, nais naming suriin kung argc ay hindi katumbas ng 4, dahil 7 00:00:30,440 --> 00:00:34,350 ngayon hindi lang kami ang pagkuha sa isang infile at outfile, ngunit nagsusumikap din paglalaan sa 8 00:00:34,350 --> 00:00:38,980 n, kung saan ay ang halagang handa namin pagsusukat ang orihinal na imahe sa pamamagitan ng. 9 00:00:38,980 --> 00:00:44,340 Sa sandaling sigurado kami ng mga iyon, maaari naming lamang convert n sa isang integer gamit atoi. 10 00:00:44,340 --> 00:00:48,760 >> Kaya, ngayon kami ay pagpunta upang lumikha ng ilang mga mga alias, tumawag lamang argv 2 infile, at 11 00:00:48,760 --> 00:00:54,240 argv 3 outfile, dahil argv 2 at argv 3 ay hindi masyadong kapaki-pakinabang na mga pangalan. 12 00:00:54,240 --> 00:00:58,510 Ngayon nais naming suriin upang masiguro n ay sa loob ng hanggahan inaasahan namin, kaya ang 13 00:00:58,510 --> 00:01:02,910 spec tinutukoy na kung ito ay mas mababa sa o katumbas ng zero, o mas malaki kaysa sa 100, 14 00:01:02,910 --> 00:01:08,580 pagkatapos na ang isang di-wastong Baguhin ang laki ng factor, at dapat naming bigyan ng babala ang mga gumagamit ng mga iyon. 15 00:01:08,580 --> 00:01:13,090 >> Sa sandaling kami ay lampas sa lahat ng iyon, kaya namin sa wakas buksan ang aming infile, at kailangan namin 16 00:01:13,090 --> 00:01:16,270 sa error suriin upang tiyakin na ang pambungad na ay hindi mabigo para sa ilang kadahilanan. 17 00:01:16,270 --> 00:01:19,860 Kailangan din namin upang buksan ang aming outfile, at muli error suriin upang tiyakin na 18 00:01:19,860 --> 00:01:21,250 ay hindi mabigo para sa ilang kadahilanan. 19 00:01:21,250 --> 00:01:26,270 Ngunit maging sigurado kung ang pagbubukas ng Nabigo ang outfile na kailangan namin upang isara 20 00:01:26,270 --> 00:01:29,040 ang infile, na kung saan ay na binuksan. 21 00:01:29,040 --> 00:01:33,690 >> Kaya, sa pag-aakala na hindi mabibigo, at pagkatapos ay lubos - tulad lamang ng sa copy.c-- 22 00:01:33,690 --> 00:01:36,140 pagpunta sa basahin sa header mula sa infile. 23 00:01:36,140 --> 00:01:40,130 Kami ay pagpunta sa tiyakin na ito ay isang wastong bitmap, ngunit ngayon kami ay pagpunta sa gawin ang ilang mga 24 00:01:40,130 --> 00:01:41,620 medyo naiiba ang mga bagay. 25 00:01:41,620 --> 00:01:44,870 Kaya una sa lahat, kami ay pagpunta sa nais na matandaan ang orihinal na lapad at taas 26 00:01:44,870 --> 00:01:48,290 ng infile, dahil kami ay pagpunta sa ay ang pagbabago nito para sa outfile. 27 00:01:48,290 --> 00:01:53,890 Kaya ngayon tandaan na para sa mga kadahilanang kakaiba bi.biheight, ay negatibo, at 28 00:01:53,890 --> 00:01:58,670 kaya ang aktwal na taas, sa positibo, namin nais na kunin ang absolute value. 29 00:01:58,670 --> 00:02:02,580 >> Ngayon, ang padding ay magiging pareho kalkulasyon ang mga ito sa copy.c, 30 00:02:02,580 --> 00:02:06,060 gamit ang lumang lapad, at ngayon kami ay talagang pagpunta upang baguhin 31 00:02:06,060 --> 00:02:07,320 ano sa aming mga header. 32 00:02:07,320 --> 00:02:11,200 Kaya kami ay pagpunta sa i-multiply ang aming lapad sa pamamagitan ng n, dahil kami ay pagsusukat ang lapad sa pamamagitan ng 33 00:02:11,200 --> 00:02:15,100 n, i-multiply ang taas sa pamamagitan ng n, dahil kami ay pagsusukat sa pamamagitan n, at ngayon kami ay 34 00:02:15,100 --> 00:02:19,250 ang kalkulasyon para sa isang bagong padding base sa bagong mga lapad. 35 00:02:19,250 --> 00:02:21,840 >> Kaya ngayon ay kailangan naming baguhin ang ilang mga iba pang mga patlang sa aming header. 36 00:02:21,840 --> 00:02:26,890 Bi.biSizeImage ay dapat na maging ang laki ng lahat ng mga bytes sa mga pixel 37 00:02:26,890 --> 00:02:28,520 at padding ng imahe. 38 00:02:28,520 --> 00:02:34,190 At kaya ang laki ng isang solong hilera ng aming imahe ay laki ng RGB triple, ang laki 39 00:02:34,190 --> 00:02:39,430 ng isang single pixel, beses ang bilang ng mga pixels sa isang hilera, pati ang padding sa 40 00:02:39,430 --> 00:02:40,910 ang dulo ng hilera. 41 00:02:40,910 --> 00:02:45,200 At pagkatapos ay kami ay pagpunta sa i-multiply na sa pamamagitan ng absolute value ng aming taas upang makakuha ng 42 00:02:45,200 --> 00:02:48,350 ang kabuuang bilang ng mga byte sa data ng imahe. 43 00:02:48,350 --> 00:02:53,050 bf.bfSize lamang ang kabuuang bilang ng bytes sa aming mga data ng imahe, kaya 44 00:02:53,050 --> 00:02:56,530 bi.biSizeImage, pati ang laki ng aming mga header. 45 00:02:56,530 --> 00:02:59,850 Kaya, ang pagdaragdag sa laki ng bitmap file header, at laki ng bitmap info 46 00:02:59,850 --> 00:03:00,800 header, OK. 47 00:03:00,800 --> 00:03:03,170 Kaya na ang lahat ng kailangan namin upang baguhin sa aming mga header. 48 00:03:03,170 --> 00:03:07,020 Ngayon gagamitin namin isulat ang header bitmap file sa aming outfile, at ang aming impormasyon bitmap 49 00:03:07,020 --> 00:03:09,880 header sa aming outfile, at ngayon handa na kaming magsimula ng pagpunta 50 00:03:09,880 --> 00:03:11,990 sa ibabaw ng aktwal na mga pixel. 51 00:03:11,990 --> 00:03:15,720 >> Kaya gusto namin upang umulit sa ibabaw mga linya-scan ang infile ni. 52 00:03:15,720 --> 00:03:17,730 Kaya gusto namin upang umulit sa paglipas ng oldheight. 53 00:03:17,730 --> 00:03:20,830 Ito ay kung bakit namin kailangan upang matandaan ang orihinal na taas, bago namin baguhin ito 54 00:03:20,830 --> 00:03:23,040 at naka-scale na ito sa pamamagitan ng n. 55 00:03:23,040 --> 00:03:27,810 Ngayon kami ay pagpunta sa basahin ang isang solong hilera ng infile sa isang 56 00:03:27,810 --> 00:03:30,630 nagpapahina ng lakas ng laki oldwidth. 57 00:03:30,630 --> 00:03:36,190 Kaya dito, kami ay freading laki ng RGB triple, isang pixel, at lumang lapad ng 58 00:03:36,190 --> 00:03:39,760 mga ito mula sa infile sa aming buffer. 59 00:03:39,760 --> 00:03:43,480 At na pupuntahan maging isang buong Ang hilera sa array. 60 00:03:43,480 --> 00:03:50,390 Kaya ngayon, gusto naming umulit n beses sa i-print ang hanay na ito sa aming outfile n ulit. 61 00:03:50,390 --> 00:03:52,510 At kaya na kung ano ang ginagawa ito loop. 62 00:03:52,510 --> 00:03:57,910 Ang panloob na loop ay iterating sa ibabaw ng Ang hilera mismo, sa ibabaw ng array, pag-print 63 00:03:57,910 --> 00:04:00,710 bawat pixel sa array n ulit. 64 00:04:00,710 --> 00:04:04,510 Kaya ang 0 elemento ay naka-print n beses, ang unang elemento ay pagiging 65 00:04:04,510 --> 00:04:05,660 naka-print na n ulit. 66 00:04:05,660 --> 00:04:10,820 At na uri ng kung paano kami ay pagpunta sa pahalang scale sa outfile, at 67 00:04:10,820 --> 00:04:13,390 ito loop, dahil kami ay looping n beses, ay kung paano kami ay pagpunta sa 68 00:04:13,390 --> 00:04:15,580 patayo scale. 69 00:04:15,580 --> 00:04:19,850 >> Down dito, nakita namin na kailangan namin upang magdagdag ng ang padding sa dulo ng bawat hilera. 70 00:04:19,850 --> 00:04:25,050 Iyon ang dahilan kung bakit ito ay nasa loob ng loop para sa na pag-print out ang mga hilera n ng lamang 71 00:04:25,050 --> 00:04:28,400 ito isang hilera mula sa infile. 72 00:04:28,400 --> 00:04:32,150 Pagkatapos down na dito, ako pagpunta sa laktawan sa ibabaw ang padding sa infile, dahil isang beses 73 00:04:32,150 --> 00:04:34,560 tapos na kami sa isang hilera ng infile, hindi namin na nagmamalasakit sa 74 00:04:34,560 --> 00:04:35,290 ano ang padding noon. 75 00:04:35,290 --> 00:04:37,110 Gusto lang namin upang makakuha ng sa pangalawang hilera. 76 00:04:37,110 --> 00:04:40,870 At pagkatapos na aming loop bumalik at gawin ang lahat ito muli para sa pangalawang hilera. 77 00:04:40,870 --> 00:04:44,406 >> Sa wakas, sa sandaling tapos na kami sa lahat ng iyon, maaari naming isara ang infile, malapit 78 00:04:44,406 --> 00:04:47,430 ang outfile, at pagbalik 0 dahil tapos na kami. 79 00:04:47,430 --> 00:04:50,330 >> Ang pangalan ko ay Rob, at ito ay baguhin ang laki. 80 00:04:50,330 --> 00:04:54,934 >> [MUSIC nagpe-play]