1 00:00:00,000 --> 00:00:00,996 2 00:00:00,996 --> 00:00:12,470 >> [MUSIC nagpe-play] 3 00:00:12,470 --> 00:00:13,210 >> Rob BOWDEN: Hi. 4 00:00:13,210 --> 00:00:16,870 Ako Rob at sabihin laki up ang problemang ito. 5 00:00:16,870 --> 00:00:20,990 Kaya kami ay pagpunta sa magsimula sa copy.c bilang isang template, ngunit kami ay pagpunta sa maging 6 00:00:20,990 --> 00:00:23,340 paggawa ng masyadong ng ilang pagbabago. 7 00:00:23,340 --> 00:00:27,570 >> Ngayon makita namin kaagad kami sa paggawa ng isang baguhin kung saan hindi na namin Sinusuri 8 00:00:27,570 --> 00:00:31,560 para sa aming mga rxc ay hindi katumbas 3, ngunit ngayon kami Sinusuri Remote-controlled na ay hindi kasing-halaga 4. 9 00:00:31,560 --> 00:00:34,670 Dahil nais din naming magsama, sa Bukod pa sa mga file sa at sa labas ng mga file 10 00:00:34,670 --> 00:00:39,550 mga argument, f na kung saan ay pagpunta sa maging ito salik sa pamamagitan ng kung saan kami ay pagsusukat. 11 00:00:39,550 --> 00:00:45,430 >> Kaya sa sandaling sigurado kami ng iyon, nais naming gamitin ang mga pag-scan f i-convert ang string 12 00:00:45,430 --> 00:00:49,030 argv1 sa isang float. 13 00:00:49,030 --> 00:00:51,330 At kami ay pagpunta upang mag-imbak na sa factor. 14 00:00:51,330 --> 00:00:55,180 Ang karagdagang character ay tinitiyak na tayo ay talagang hindi pagpasok 15 00:00:55,180 --> 00:00:59,200 isang bagay tulad ng 1.4 ABC sa command line. 16 00:00:59,200 --> 00:01:02,960 >> Ngayon kami ay pagpunta upang lumikha ng ilang mga alias dahil RV2 at RV3 ay hindi 17 00:01:02,960 --> 00:01:04,310 napaka-kapaki-pakinabang na mga pangalan. 18 00:01:04,310 --> 00:01:07,660 Kami ay, sa halip, ng pagpunta sa tumawag sa ang mga ito sa file at out file. 19 00:01:07,660 --> 00:01:11,580 Ngayon kami ay pagpunta upang matiyak na ang aming mga salik ay talagang wasto. 20 00:01:11,580 --> 00:01:16,330 Kaya kung factor ay mas mababa sa o katumbas ng zero o mas mataas sa 100, pagkatapos ng bawat 21 00:01:16,330 --> 00:01:19,660 ang spec, dapat naming tanggihan na factor. 22 00:01:19,660 --> 00:01:23,890 >> Kapag sigurado kami na ito ay mabuti, ngayon ng aming makakaya buksan ang n file, at mayroon kaming upang gawing 23 00:01:23,890 --> 00:01:25,950 siguraduhin na ito ay matagumpay na binuksan. 24 00:01:25,950 --> 00:01:28,630 Kung ito ay hindi, na ay magbabalik null. 25 00:01:28,630 --> 00:01:30,390 Kami ay pagpunta upang buksan ang file out. 26 00:01:30,390 --> 00:01:33,420 At muli, nais naming suriin upang sigurado matagumpay ito ay binuksan. 27 00:01:33,420 --> 00:01:37,270 At kung ito ay hindi matagumpay na buksan, at pagkatapos ay kailangan din namin upang tiyaking isara 28 00:01:37,270 --> 00:01:40,870 ang n file na orihinal na matagumpay binuksan, o iba mayroon kaming 29 00:01:40,870 --> 00:01:42,600 memory tumagas. 30 00:01:42,600 --> 00:01:46,350 >> Kaya ngayon ka pagpunta namin na basahin sa bitmap header ng file at impormasyon bitmap 31 00:01:46,350 --> 00:01:48,890 header mula sa n file. 32 00:01:48,890 --> 00:01:52,360 Kami ay pagpunta sa tiyakin na ang n na file ay isang wastong bitmap. 33 00:01:52,360 --> 00:01:52,640 OK. 34 00:01:52,640 --> 00:01:55,100 >> Kaya ngayon kami ay pagpunta sa simulan paggawa ng ilang mga pagbabago. 35 00:01:55,100 --> 00:01:58,840 Kaya dahil kami ay pagpunta sa ma-pagbabago bagay, muna namin nais na matandaan ang 36 00:01:58,840 --> 00:02:01,510 lumang lapad ng n file. 37 00:02:01,510 --> 00:02:05,160 Gusto naming tandaan ang lumang padding ng ang n file gamit ang parehong kalkulasyon 38 00:02:05,160 --> 00:02:06,990 mula copy.c. 39 00:02:06,990 --> 00:02:09,840 >> At ngayon kami ay pagpunta upang baguhin ang bitmap header impormasyon. 40 00:02:09,840 --> 00:02:13,630 At kaya kami multiply pareho ang lapad at ang taas sa pamamagitan ng factor dahil 41 00:02:13,630 --> 00:02:15,750 na kung ano ang namin ang pagsusukat sa pamamagitan ng. 42 00:02:15,750 --> 00:02:18,420 Kami ay pagpunta upang matukoy ang bagong padding ng mga file sa pamamagitan ng 43 00:02:18,420 --> 00:02:21,140 gamit ang bagong lapad. 44 00:02:21,140 --> 00:02:27,330 At kami ay pagpunta upang matukoy ang bagong laki ng imahe gamit ang bilang ng mga 45 00:02:27,330 --> 00:02:31,610 bytes sa isang solong hilera na kung saan ay pagpunta sa maging ang bilang ng mga pixels ang hilera na 46 00:02:31,610 --> 00:02:35,960 beses ang laki ng isang pixel plus ang bilang ng mga byte ng padding sa dulo 47 00:02:35,960 --> 00:02:40,310 ng hilera na, at multiply ang lahat na sa pamamagitan ng bilang ng mga hilera na mayroon kami. 48 00:02:40,310 --> 00:02:43,800 Kaya iyon ang bilang ng mga byte mayroon kaming sa aming mga data ng imahe. 49 00:02:43,800 --> 00:02:48,190 >> Bf.Bfsize ngayon ay magiging ang numero ng bytes sa aming beta imahe plus 50 00:02:48,190 --> 00:02:49,350 ang laki ng aming mga header. 51 00:02:49,350 --> 00:02:53,910 Kaya plus laki ng header bitmap file at laki ng bitmap header impormasyon. 52 00:02:53,910 --> 00:02:54,510 OK. 53 00:02:54,510 --> 00:02:56,440 Kaya na ito para sa aming mga header. 54 00:02:56,440 --> 00:02:59,030 Maaari naming isulat ang file ulo at header impormasyon sa aming out 55 00:02:59,030 --> 00:03:01,590 maghain, at kami ay mabuti. 56 00:03:01,590 --> 00:03:03,800 >> Ngayon ay oras na upang simulan ang aktwal na pagsusulat ng mga pixel 57 00:03:03,800 --> 00:03:05,120 data upang ang out file. 58 00:03:05,120 --> 00:03:10,460 Kami ay pagpunta sa ipinapahayag ng buffer ng laki lumang lapad RGB triples, at kami ay 59 00:03:10,460 --> 00:03:13,790 pagpunta sa ipinapahayag sa isang variable na tinatawag na hilera manhid, na kami ay pagpunta sa 60 00:03:13,790 --> 00:03:15,640 sa simula-set katumbas ng negatibong 1. 61 00:03:15,640 --> 00:03:19,090 Susubukan naming makita na kami ay pagpunta sa gumagamit na upang masubaybayan kung ano 62 00:03:19,090 --> 00:03:22,640 hilera kasalukuyan naming na-load sa ito buffer. 63 00:03:22,640 --> 00:03:23,290 OK. 64 00:03:23,290 --> 00:03:28,750 >> Kaya ngayon hindi katulad ng standard edition, sa halip ng iterating sa ibabaw sa in 65 00:03:28,750 --> 00:03:32,900 file, kami ay pagpunta upang umulit sa ibabaw ng bawat hilera sa labas file at tayahin 66 00:03:32,900 --> 00:03:38,130 na hilera sa file sa nais naming ilagay sa hilerang ito sa labas file. 67 00:03:38,130 --> 00:03:44,930 Kaya iterating sa lahat ng mga hilera sa labas mag-file gamit ang bagong taas, hindi namin unang 68 00:03:44,930 --> 00:03:48,890 pagpunta upang matukoy ang mga hilera sa lumang maghain kami ay pagpunta upang gamitin, na kung saan kami ay 69 00:03:48,890 --> 00:03:53,560 pagpunta sa gawin sa pamamagitan ng pagsasagawa kasalukuyang ito hilera na hinati sa mga salik. 70 00:03:53,560 --> 00:03:58,000 Kaya na pupuntahan bigyan kami ng mga hilera sa lumang file na gusto namin. 71 00:03:58,000 --> 00:04:03,310 >> Kaya ngayon kung hilera manhid ang hindi pantay lumang y, kami ay pagpunta sa may upang basahin ang mga hilera 72 00:04:03,310 --> 00:04:05,940 na nais namin sa aming kuprum hilera buffer. 73 00:04:05,940 --> 00:04:07,700 Kaya paano kami makapupunta sa gawin iyon? 74 00:04:07,700 --> 00:04:11,650 Una, kami ay pagpunta upang malaman kung ang posisyon na nagsisimula hilera na sa 75 00:04:11,650 --> 00:04:13,100 orihinal na file. 76 00:04:13,100 --> 00:04:18,630 Kaya posisyon na ay magiging nakalipas na ang lahat ng aming mga header at 77 00:04:18,630 --> 00:04:21,589 ngayon nakalipas lumang y mga hilera. 78 00:04:21,589 --> 00:04:23,880 >> At kaya kung gaano karaming mga byte ay nasa isang solong hilera? 79 00:04:23,880 --> 00:04:28,740 Muli, laki ng RGB triple beses lumang lapad plus lumang padding, kaya iyon ang 80 00:04:28,740 --> 00:04:30,640 bilang ng mga bytes sa isang solong hilera. 81 00:04:30,640 --> 00:04:33,680 At gusto namin upang laktawan ang nakalipas lumang y mga hilera. 82 00:04:33,680 --> 00:04:37,580 Kaya kami ay pagpunta sa f humanap at kami ay gamit humingi ng hanay upang simulan mula sa 83 00:04:37,580 --> 00:04:39,100 simula ng isang file. 84 00:04:39,100 --> 00:04:42,740 Kami ay pagpunta sa f humingi sa posisyon na ito sa file, paglalagay sa amin sa 85 00:04:42,740 --> 00:04:46,500 simula ng hilera gusto namin upang basahin sa aming buffer. 86 00:04:46,500 --> 00:04:48,510 >> Kami ay pagpunta sa set hilera manhid katumbas ng lumang y. 87 00:04:48,510 --> 00:04:53,080 Kaya ngayon kung namin loop sa likod at gusto naming gamitin ang parehong hilera sa aming out file, 88 00:04:53,080 --> 00:04:55,970 pagkatapos ay hindi namin pagpunta sa basahin itong muli sa hindi kinakailangan. 89 00:04:55,970 --> 00:04:59,310 Kaya talaga, hilera manhid ay lamang isang pag-optimize. 90 00:04:59,310 --> 00:05:05,500 >> Sa wakas, kami ay pagpunta sa basahin sa kasalukuyang hilera sa lumang lapad RGB triples 91 00:05:05,500 --> 00:05:08,040 na gusto naming mula sa orihinal na file. 92 00:05:08,040 --> 00:05:12,270 Kaya ngayon kuprum hilera naglalaman ng pixel mula sa ang orihinal na file na gusto naming 93 00:05:12,270 --> 00:05:14,200 sumulat sa out file. 94 00:05:14,200 --> 00:05:18,960 Kaya ngayon, gusto lamang sa itaas, sa halip ng iterating sa ibabaw ng lumang file, kailangan namin 95 00:05:18,960 --> 00:05:22,560 ito upang umulit sa ibabaw ng mga bagong file hilera. 96 00:05:22,560 --> 00:05:27,450 Well dito, sa halip na iterating sa ibabaw ng lahat ng lumang pixel na sa kuprum hilera, 97 00:05:27,450 --> 00:05:31,210 gusto naming umulit sa ibabaw ng lahat ng pixels ang aming bagong file sa ito 98 00:05:31,210 --> 00:05:32,480 partikular na hilera. 99 00:05:32,480 --> 00:05:34,140 >> Bakit gusto naming gawin iyon? 100 00:05:34,140 --> 00:05:38,960 Dahil nakikita natin dito na hindi kami talagang kinakailangan ang paggamit ng lahat ng 101 00:05:38,960 --> 00:05:41,020 pixel sa orihinal na file. 102 00:05:41,020 --> 00:05:46,630 Dahil kung kami ay pag-urong, maaari naming talagang gusto upang laktawan ang pixel. 103 00:05:46,630 --> 00:05:48,090 At nakita namin na ito - 104 00:05:48,090 --> 00:05:49,690 x na hinati sa mga salik - 105 00:05:49,690 --> 00:05:55,620 malapit na salamin up dito kung saan kami sabihin y hinati sa mga salik upang malaman na 106 00:05:55,620 --> 00:06:02,480 ang lumang y-ika hilera ay tumutugon sa ang hilera y-ika sa bagong file. 107 00:06:02,480 --> 00:06:05,880 >> Ngayon kami ay pagpunta sa isulat ang lahat ng mga pixel mula sa lumang hilera 108 00:06:05,880 --> 00:06:07,440 sa aming bagong hilera. 109 00:06:07,440 --> 00:06:10,890 Sa sandaling tapos na kami na, kailangan naming lamang ilagay ang padding sa dulo ng aming mga hilera 110 00:06:10,890 --> 00:06:15,540 at kami ay loop bumalik at magpatuloy para sa lahat ng mga hilera sa aming bagong file. 111 00:06:15,540 --> 00:06:19,390 Sa katapusan, kailangan naming isara ang aming lumang maghain, isara ang aming mga bagong file, at pagbalik 112 00:06:19,390 --> 00:06:21,540 zero dahil ang lahat ng bagay nagpunta fine. 113 00:06:21,540 --> 00:06:24,220 >> Ang pangalan ko ay Rob at ito ay pamamahinga. 114 00:06:24,220 --> 00:06:29,184 >> [MUSIC nagpe-play]