1 00:00:00,000 --> 00:00:12,240 >> [MIZIK jwe] 2 00:00:12,240 --> 00:00:15,870 >> ROB BOWDEN: Hi, mwen se Rob, se pou yo eseye sa a sou pou gwosè. 3 00:00:15,870 --> 00:00:21,100 Se konsa, nou ap ankò ale nan kòmanse ak fondamantalman yon kopi copy.c la, ak 4 00:00:21,100 --> 00:00:22,860 fè yon chanjman kèk. 5 00:00:22,860 --> 00:00:26,280 Remake byen imedyatman nou wè yon chanjman, kote olye pou yo tcheke yo wè si 6 00:00:26,280 --> 00:00:30,440 arg pa egal 3, nou vle tcheke si arg fè sa ki pa egal 4, depi 7 00:00:30,440 --> 00:00:34,350 kounye a nou ap pa sèlman pran nan yon infile ak outfile, men nou ap tou ap pran nan 8 00:00:34,350 --> 00:00:38,980 n, ki se kantite lajan an ke nou ap dekale imaj orijinal la pa. 9 00:00:38,980 --> 00:00:44,340 Yon fwa nou ap asire w de sa, nou kapab jis konvèti n nan yon nonb antye ki pè lè l sèvi avèk atwa. 10 00:00:44,340 --> 00:00:48,760 >> Se konsa, kounye a nou ap ale nan kreye kèk anpren, jis rele argv 2 infile, ak 11 00:00:48,760 --> 00:00:54,240 argv 3 outfile, paske argv 2 ak argv 3 yo pa non trè itil. 12 00:00:54,240 --> 00:00:58,510 Koulye a, nou vle tcheke a asire w n se nan limit yo nou espere, se konsa a 13 00:00:58,510 --> 00:01:02,910 espèk presize ke si li nan mwens pase oswa egal a zewo, oswa ki pi gran pase 100, 14 00:01:02,910 --> 00:01:08,580 Lè sa a, sa a, se yon faktè rdimansyonman valab, e nou ta dwe avèti itilizatè a nan sa. 15 00:01:08,580 --> 00:01:13,090 >> Yon fwa nou ap pi lwen pase tout sa ki, nou ka finalman louvri infile nou an, epi nou bezwen 16 00:01:13,090 --> 00:01:16,270 erè tcheke a asire w ke nan ouvèti pa t rate pou kèk rezon. 17 00:01:16,270 --> 00:01:19,860 Nou menm tou nou bezwen louvri outfile nou an, epi ankò erè tcheke a asire w ke 18 00:01:19,860 --> 00:01:21,250 pa t rate pou kèk rezon. 19 00:01:21,250 --> 00:01:26,270 Men, asire w ke si ouvèti a nan nan outfile echwe ke nou bezwen yo fèmen 20 00:01:26,270 --> 00:01:29,040 infile a, ki te deja louvri. 21 00:01:29,040 --> 00:01:33,690 >> Se konsa,, an konsideran ke pa t rate, lè sa a we're - jis tankou nan copy.c-- 22 00:01:33,690 --> 00:01:36,140 pral li nan header a soti nan infile la. 23 00:01:36,140 --> 00:01:40,130 Nou pral asire w ke li nan yon ki valab bitmap, men kounye a nou ap pral fè kèk 24 00:01:40,130 --> 00:01:41,620 bagay sa yo yon ti jan yon lòt jan. 25 00:01:41,620 --> 00:01:44,870 Se konsa, premye, nou ap ale nan vle sonje lajè a orijinal ak wotè 26 00:01:44,870 --> 00:01:48,290 nan infile a, paske nou pral dwe chanje li pou outfile la. 27 00:01:48,290 --> 00:01:53,890 Se konsa, koulye sonje ke pou rezon etranj bi.biheight, an negatif, ak 28 00:01:53,890 --> 00:01:58,670 Se konsa, wotè aktyèl la, nan pozitif, nou vle pran valè absoli. 29 00:01:58,670 --> 00:02:02,580 >> Koulye a, padding an ki pral fè menm bagay la tou kalkil jan li te ye nan copy.c, 30 00:02:02,580 --> 00:02:06,060 lè l sèvi avèk lajè a fin vye granmoun, epi kounye a nou ap aktyèlman pral chanje 31 00:02:06,060 --> 00:02:07,320 sa a nan header nou an. 32 00:02:07,320 --> 00:02:11,200 Se konsa, nou ap ale nan anpil anpil pitit lajè nou an pa n, depi nou ap dekale lajè a pa 33 00:02:11,200 --> 00:02:15,100 n, anpil anpil pitit wotè a pa n, depi nou ap dekale pa n, e kounye a, nou gen 34 00:02:15,100 --> 00:02:19,250 kalkil la pou yon nouvo padding ki baze sou lajè a nouvo. 35 00:02:19,250 --> 00:02:21,840 >> Se konsa, kounye a nou bezwen chanje kèk lòt jaden nan header nou an. 36 00:02:21,840 --> 00:02:26,890 Bi.biSizeImage sa sipoze ye a gwosè nan tout bytes yo nan piksèl yo 37 00:02:26,890 --> 00:02:28,520 ak ogmantasyon nan imaj la. 38 00:02:28,520 --> 00:02:34,190 Se konsa, gwosè a nan yon sèl ranje nou imaj se gwosè nan Rgb trip, gwosè a 39 00:02:34,190 --> 00:02:39,430 nan yon pixel sèl, fwa kantite piksèl nan yon ranje, plis padding a nan 40 00:02:39,430 --> 00:02:40,910 nan fen ranje a. 41 00:02:40,910 --> 00:02:45,200 Lè sa a, nou pral anpil anpil pitit ki pa ki gen valè absoli nan wotè nou jwenn 42 00:02:45,200 --> 00:02:48,350 kantite total bytes nan done yo imaj. 43 00:02:48,350 --> 00:02:53,050 bf.bfSize se jis kantite total nan bytes nan done pòtre ak nou, se konsa 44 00:02:53,050 --> 00:02:56,530 bi.biSizeImage, plis la gwosè nan Tèt nou an. 45 00:02:56,530 --> 00:02:59,850 Se konsa,, pandan l ajoute sou gwosè a nan dosye bitmap header, ak kantite elèv bitmap info 46 00:02:59,850 --> 00:03:00,800 header, OK. 47 00:03:00,800 --> 00:03:03,170 Se konsa, sa a, se tout sa nou bezwen chanje nan Tèt nou an. 48 00:03:03,170 --> 00:03:07,020 Koulye a, nou pral ekri lento a dosye bitmap outfile nou an, epi info bitmap nou 49 00:03:07,020 --> 00:03:09,880 header outfile nou an, e kounye a, nou ap pare yo kòmanse ale 50 00:03:09,880 --> 00:03:11,990 sou piksèl yo reyèl. 51 00:03:11,990 --> 00:03:15,720 >> Se konsa, nou vle repňte sou liy optik infile la. 52 00:03:15,720 --> 00:03:17,730 Se konsa, nou vle repňte sou oldheight. 53 00:03:17,730 --> 00:03:20,830 Se poutèt sa nou bezwen sonje la orijinal wotè, anvan nou chanje li 54 00:03:20,830 --> 00:03:23,040 ak pwopòsyonèl li pa n. 55 00:03:23,040 --> 00:03:27,810 Koulye a, nou ap ale nan li yon sèl ranje nan infile a nan yon 56 00:03:27,810 --> 00:03:30,630 tanpon nan gwosè oldwidth. 57 00:03:30,630 --> 00:03:36,190 Se konsa, isit la, nou ap freading gwosè nan Rgb trip, youn pixel, ak lajè fin vye granmoun nan 58 00:03:36,190 --> 00:03:39,760 yo soti nan infile a nan zòn de defans nou an. 59 00:03:39,760 --> 00:03:43,480 Epi sa a, pral fè yon tout ranje nan etalaj sa a. 60 00:03:43,480 --> 00:03:50,390 Se konsa, koulye a, nou vle repňte fwa n ekri ak lèt ​​detache ranje sa a outfile n fwa nou an. 61 00:03:50,390 --> 00:03:52,510 Se konsa, se sa ki sa a bouk ap fè. 62 00:03:52,510 --> 00:03:57,910 Sa a bouk enteryè se iteration sou la ranje tèt li, sou etalaj, enprime nan 63 00:03:57,910 --> 00:04:00,710 chak pixel nan etalaj la n fwa. 64 00:04:00,710 --> 00:04:04,510 Se konsa, se eleman ki zeroth yo te enprime n fwa, se eleman nan premye ke yo te 65 00:04:04,510 --> 00:04:05,660 enprime fwa n. 66 00:04:05,660 --> 00:04:10,820 Epi sa a, sòt de ki jan nou ap ale nan orizontal echèl la nan outfile la, ak 67 00:04:10,820 --> 00:04:13,390 sa a bouk, depi nou ap loupin n fwa, ki jan nou ap ale nan 68 00:04:13,390 --> 00:04:15,580 vètikal echèl. 69 00:04:15,580 --> 00:04:19,850 >> Desann isit la, nou wè ke nou bezwen ajoute padding a nan fen chak ranje. 70 00:04:19,850 --> 00:04:25,050 Se poutèt sa sa a se andedan pou bouk la ki nan enprime soti ranje yo n nan jis 71 00:04:25,050 --> 00:04:28,400 ranje sa a yon sèl soti nan infile la. 72 00:04:28,400 --> 00:04:32,150 Lè sa a, desann isit la, mwen pral ale dirèkteman plis pase padding la nan infile a, depi yon fwa 73 00:04:32,150 --> 00:04:34,560 nou ap fè ak yon ranje nan infile, nou pa pran swen sou 74 00:04:34,560 --> 00:04:35,290 sa padding la te ye a. 75 00:04:35,290 --> 00:04:37,110 Nou jis vle pou li ale nan dezyèm ranje a. 76 00:04:37,110 --> 00:04:40,870 Lè sa a, nou pral bouk retounen lakay yo epi fè tout sa a ankò pou dezyèm ranje a. 77 00:04:40,870 --> 00:04:44,406 >> Finalman, yon fwa nou ap fè ak tout sa ki, nou ka fèmen infile a, fèmen 78 00:04:44,406 --> 00:04:47,430 outfile a, epi retounen 0 paske nou ap fè. 79 00:04:47,430 --> 00:04:50,330 >> Non mwen se Rob, ak sa a te rdimansyonman. 80 00:04:50,330 --> 00:04:54,934 >> [MIZIK jwe]