1 00:00:00,000 --> 00:00:00,996 2 00:00:00,996 --> 00:00:12,470 >> [MIZIK jwe] 3 00:00:12,470 --> 00:00:13,210 >> ROB BOWDEN: Hi. 4 00:00:13,210 --> 00:00:16,870 Mwen se Rob epi kite gwosè a moute pwoblèm sa a. 5 00:00:16,870 --> 00:00:20,990 Se konsa, nou ap ale nan kòmanse ak copy.c kòm yon modèl, men nou ap ale nan dwe 6 00:00:20,990 --> 00:00:23,340 fè byen yon chanjman kèk. 7 00:00:23,340 --> 00:00:27,570 >> Koulye a, nou wè n ap imedyatman fè yon chanje kote n ap pa gen okenn ankò tcheke 8 00:00:27,570 --> 00:00:31,560 pou rxc nou yo pa egal a 3, men kounye a nou ap tcheke rc pa egal a 4. 9 00:00:31,560 --> 00:00:34,670 Depi nou vle tou enkli ladan yo, nan adisyon a nan dosye ak soti dosye yo 10 00:00:34,670 --> 00:00:39,550 agiman, f ki se pral fè sa a faktè pa ki nou ap dekale. 11 00:00:39,550 --> 00:00:45,430 >> Se konsa, yon fwa nou ap asire w de sa, nou vle sèvi ak yo optik f konvèti fisèl la 12 00:00:45,430 --> 00:00:49,030 argv1 nan yon flote. 13 00:00:49,030 --> 00:00:51,330 Apre sa, nou pral nan magazen ke nan faktè. 14 00:00:51,330 --> 00:00:55,180 Sa a karaktè plis ap fè asire w ke ke nou ap pa aktyèlman k ap antre nan 15 00:00:55,180 --> 00:00:59,200 yon bagay tankou 1.4 ABC nan liy lan lòd. 16 00:00:59,200 --> 00:01:02,960 >> Koulye a, nou ap ale nan kreye kèk anpren depi RV2 ak RV3 yo pa 17 00:01:02,960 --> 00:01:04,310 non trè itil. 18 00:01:04,310 --> 00:01:07,660 Nou ap, olye de sa, ale nan rele yo nan dosye ak soti dosye-a. 19 00:01:07,660 --> 00:01:11,580 Koulye a, nou ap ale nan asire w ke faktè nou te aktyèlman ki valid. 20 00:01:11,580 --> 00:01:16,330 Se konsa, si faktè se mwens pase oswa egal a zewo oswa pi gran pase 100, Lè sa a, tankou pou chak 21 00:01:16,330 --> 00:01:19,660 espèk a, nou ta dwe rejte ki faktè. 22 00:01:19,660 --> 00:01:23,890 >> Lè nou ap asire w li bon, kounye a nou kapab ouvri dosye a n yo, epi nou gen fè 23 00:01:23,890 --> 00:01:25,950 asire w ke li te avèk siksè louvri. 24 00:01:25,950 --> 00:01:28,630 Si li pa t ', ki pral retounen nil. 25 00:01:28,630 --> 00:01:30,390 Nou pral ouvri dosye a deyò. 26 00:01:30,390 --> 00:01:33,420 Li di ankò, nou vle tcheke fè asire li byen avèk siksè louvri. 27 00:01:33,420 --> 00:01:37,270 Men, si li pa t 'avèk siksè louvri, lè sa a nou bezwen tou asire w ke ou fèmen 28 00:01:37,270 --> 00:01:40,870 dosye a n ki orijinal avèk siksè louvri, oswa lòt moun nou gen yon 29 00:01:40,870 --> 00:01:42,600 memwa koule. 30 00:01:42,600 --> 00:01:46,350 >> Se konsa, kounye a nou ap ale nan li nan bitmap la dosye header ak bitmap info 31 00:01:46,350 --> 00:01:48,890 header nan dosye a n. 32 00:01:48,890 --> 00:01:52,360 Nou pral asire w ke nan dosye n te yon bitmap ki valid. 33 00:01:52,360 --> 00:01:52,640 OK. 34 00:01:52,640 --> 00:01:55,100 >> Se konsa, kounye a nou ap ale nan kòmanse fè kèk chanjman. 35 00:01:55,100 --> 00:01:58,840 Se konsa, paske nou ap ale nan dwe chanje bagay sa yo, nou premye bezwen sonje la 36 00:01:58,840 --> 00:02:01,510 lajè fin vye granmoun nan dosye a n. 37 00:02:01,510 --> 00:02:05,160 Nou vle sonje padding la fin vye granmoun nan dosye a n lè l sèvi avèk kalkil la menm 38 00:02:05,160 --> 00:02:06,990 soti nan copy.c. 39 00:02:06,990 --> 00:02:09,840 >> Epi, koulye a nou pral chanje info bitmap lento a. 40 00:02:09,840 --> 00:02:13,630 Se konsa, nou ap miltipliye tou de lajè a ak wotè a pa faktè depi 41 00:02:13,630 --> 00:02:15,750 se sa ki nou ap dekale pa. 42 00:02:15,750 --> 00:02:18,420 Nou pral detèmine a nouvo padding nan dosye a pa 43 00:02:18,420 --> 00:02:21,140 lè l sèvi avèk lajè a nouvo. 44 00:02:21,140 --> 00:02:27,330 Apre sa, nou pral detèmine nouvo a gwosè nan imaj la lè l sèvi avèk nimewo a nan 45 00:02:27,330 --> 00:02:31,610 bytes nan yon sèl ranje ki se ale nan gen nimewo a nan piksèl nan ki ranje 46 00:02:31,610 --> 00:02:35,960 fwa gwosè a nan yon pixel plis la kantite bytes nan padding nan fen 47 00:02:35,960 --> 00:02:40,310 nan ki ranje, ak miltipliye tout sa ki pa kantite ranje ke nou gen. 48 00:02:40,310 --> 00:02:43,800 Se konsa, sa a, se ki kantite bytes nou gen nan done pòtre ak nou. 49 00:02:43,800 --> 00:02:48,190 >> Bf.Bfsize koulye a, se pral fè nimewo a nan bytes nan beta pòtre ak nou plis 50 00:02:48,190 --> 00:02:49,350 gwosè a nan Tèt nou an. 51 00:02:49,350 --> 00:02:53,910 Gwosè Se konsa, plis nan dosye bitmap header ak gwosè nan bitmap info header. 52 00:02:53,910 --> 00:02:54,510 OK. 53 00:02:54,510 --> 00:02:56,440 Se konsa, sa a, se li pou Tèt nou an. 54 00:02:56,440 --> 00:02:59,030 Nou ka ekri tèt la dosye ak enfòmasyon header soti nou an 55 00:02:59,030 --> 00:03:01,590 pote, epi nou ap bon. 56 00:03:01,590 --> 00:03:03,800 >> Koulye a, li lè yo kòmanse aktyèlman ekri pixel nan 57 00:03:03,800 --> 00:03:05,120 done nan dosye a deyò. 58 00:03:05,120 --> 00:03:10,460 Nou pral deklare yon zòn de defans nan gwosè fin vye granmoun lajè Rgb tripl, epi nou ap 59 00:03:10,460 --> 00:03:13,790 ale nan deklare yon varyab rele angoudi ranje, ki se nou pral 60 00:03:13,790 --> 00:03:15,640 okòmansman mete egal a negatif 1. 61 00:03:15,640 --> 00:03:19,090 Nou pwal wè ke nou ap ale nan dwe lè l sèvi avèk ke yo nan lòd kenbe tras nan sa ki 62 00:03:19,090 --> 00:03:22,640 ranje nou kounye a yo te chaje nan zòn de defans sa a. 63 00:03:22,640 --> 00:03:23,290 OK. 64 00:03:23,290 --> 00:03:28,750 >> Se konsa, koulye kontrèman ak edisyon an estanda, olye pou yo iteration sou nan nan nan 65 00:03:28,750 --> 00:03:32,900 dosye, nou ap ale nan repňte sou chak ranje nan dosye a deyò epi yo konnen 66 00:03:32,900 --> 00:03:38,130 Ki ranje nan dosye a nan nou vle mete nan ranje sa a nan dosye a deyò. 67 00:03:38,130 --> 00:03:44,930 Se konsa, iteration sou tout ranje nan soti nan pote lè l sèvi avèk wotè a nouvo, nou ap premye 68 00:03:44,930 --> 00:03:48,890 ale nan detèmine ranje a nan fin vye granmoun lan pote nou pral sèvi ak yo, ki nou ap 69 00:03:48,890 --> 00:03:53,560 pral fè pa pran kounye a sa a ranje divize pa faktè. 70 00:03:53,560 --> 00:03:58,000 Se konsa, ki nan ale nan ban nou ranje a nan dosye a fin vye granmoun ke nou vle. 71 00:03:58,000 --> 00:04:03,310 >> Se konsa, koulye a si angoudi ranje fè sa ki pa egal fin vye granmoun y, nou ap pral fè yo li ranje a 72 00:04:03,310 --> 00:04:05,940 ke nou vle nan zòn de defans ranje akt nou an. 73 00:04:05,940 --> 00:04:07,700 Se konsa, kouman nou pral fè sa? 74 00:04:07,700 --> 00:04:11,650 Premyèman, nou ap ale nan figi konnen an pozisyon ki kòmanse ki ranje nan la 75 00:04:11,650 --> 00:04:13,100 orijinal dosye-a. 76 00:04:13,100 --> 00:04:18,630 Se konsa, ki pozisyon a pwal sot pase yo tout Tèt nou yo ak 77 00:04:18,630 --> 00:04:21,589 kounye a sot pase yo fin vye granmoun y ranje. 78 00:04:21,589 --> 00:04:23,880 >> Se konsa, ki jan anpil bytes yo se nan yon sèl ranje? 79 00:04:23,880 --> 00:04:28,740 Yon fwa ankò, gwosè nan Rgb trip fwa fin vye granmoun lajè plis fin vye granmoun padding, se konsa sa a, se la 80 00:04:28,740 --> 00:04:30,640 kantite bytes nan yon sèl ranje. 81 00:04:30,640 --> 00:04:33,680 Apre sa, nou vle sote sot pase yo fin vye granmoun ranje y. 82 00:04:33,680 --> 00:04:37,580 Se konsa, nou ap ale nan f chache e nou ap lè l sèvi avèk chache mete yo kòmanse soti nan la 83 00:04:37,580 --> 00:04:39,100 kòmanse nan yon dosye. 84 00:04:39,100 --> 00:04:42,740 Nou pral f chache nan pozisyon sa a nan dosye a, mete nou nan la 85 00:04:42,740 --> 00:04:46,500 kòmanse nan ranje a nou vle li nan zòn de defans nou an. 86 00:04:46,500 --> 00:04:48,510 >> Nou pral mete ranje angoudi egal a fin vye granmoun y. 87 00:04:48,510 --> 00:04:53,080 Se konsa, koulye si nou bouk retounen lakay yo epi nou vle sèvi ak menm ranje sa a nan dosye soti nou an, 88 00:04:53,080 --> 00:04:55,970 Lè sa a, nou pa ap ale nan li li nan ankò san nesesite. 89 00:04:55,970 --> 00:04:59,310 Se konsa, reyèlman, angoudi ranje se jis yon optimize. 90 00:04:59,310 --> 00:05:05,500 >> Finalman, nou ap ale nan li nan la ranje aktyèl fin vye granmoun lajè Rgb nan tripl 91 00:05:05,500 --> 00:05:08,040 ke nou vle soti nan dosye orijinal la. 92 00:05:08,040 --> 00:05:12,270 Se konsa, koulye ranje akt gen piksèl yo soti nan dosye a orijinal ki nou vle 93 00:05:12,270 --> 00:05:14,200 ekri nan dosye a deyò. 94 00:05:14,200 --> 00:05:18,960 Se konsa, kounye a, jis renmen pi wo a, olye pou yo iteration sou dosye a fin vye granmoun, nou bezwen 95 00:05:18,960 --> 00:05:22,560 li nan repňte sou dosye nouvo ranje yo. 96 00:05:22,560 --> 00:05:27,450 Byen isit la, olye pou yo iteration sou tout nan piksèl yo fin vye granmoun ki nan akt ranje, 97 00:05:27,450 --> 00:05:31,210 nou vle repňte sou tout nan la piksèl nan nouvo dosye nou yo nan sa a 98 00:05:31,210 --> 00:05:32,480 patikilye ranje. 99 00:05:32,480 --> 00:05:34,140 >> Poukisa nou vle fè sa? 100 00:05:34,140 --> 00:05:38,960 Paske nou wè isit la ke nou pa ap aktyèlman nesesèman lè l sèvi avèk tout la 101 00:05:38,960 --> 00:05:41,020 piksèl nan dosye orijinal la. 102 00:05:41,020 --> 00:05:46,630 Paske si nou ap réduction, nou ta ka aktyèlman vle sote piksèl yo. 103 00:05:46,630 --> 00:05:48,090 Apre sa, nou wè ke sa a - 104 00:05:48,090 --> 00:05:49,690 x divize pa faktè - 105 00:05:49,690 --> 00:05:55,620 byen miwa moute isit la kote nou di y divize pa faktè figi konnen ki 106 00:05:55,620 --> 00:06:02,480 fin vye granmoun y-yèm ranje a koresponn ak ranje a y-th nan nouvo dosye sa a. 107 00:06:02,480 --> 00:06:05,880 >> Koulye a, nou ap ale nan ekri tout piksèl sa yo soti nan ranje a fin vye granmoun 108 00:06:05,880 --> 00:06:07,440 nan nouvo ranje nou an. 109 00:06:07,440 --> 00:06:10,890 Yon fwa nou te fè sa, nou bezwen jis mete padding la nan fen ranje nou 110 00:06:10,890 --> 00:06:15,540 Epitou, n ap bouk retounen lakay yo epi kontinye pou tout ranje yo nan nouvo dosye nou yo. 111 00:06:15,540 --> 00:06:19,390 Nan fen a, nou ap oblije fèmen pòt fin vye granmoun nou pote, fèmen nouvo dosye nou an, epi retounen 112 00:06:19,390 --> 00:06:21,540 zewo paske tout bagay te ale amann. 113 00:06:21,540 --> 00:06:24,220 >> Non mwen se Rob ak sa a te Vakans. 114 00:06:24,220 --> 00:06:29,184 >> [MIZIK jwe]