1 00:00:00,000 --> 00:00:10,210 >> [MIZIK jwe] 2 00:00:10,210 --> 00:00:13,320 >> ZAMYLA Chan: souflèt Annou bagay sa yo moute ak rdimansyonman. 3 00:00:13,320 --> 00:00:17,710 Nan rdimansyonman, itilizatè a ap pase nan, atravè liy lan lòd, yon imaj bitmap ki 4 00:00:17,710 --> 00:00:21,860 yo vle ou selon echèl la pa yon kantite pou yo menm tou pase nan, 5 00:00:21,860 --> 00:00:23,770 nan liy lan lòd. 6 00:00:23,770 --> 00:00:24,690 Ki jan nou fè sa? 7 00:00:24,690 --> 00:00:28,270 >> Oke, premye bagay sa yo an premye, kite a kraze sa a desann nan etap. 8 00:00:28,270 --> 00:00:31,510 W ap ale nan vle louvri infile la yo ke yo ba ou, menm jan tou 9 00:00:31,510 --> 00:00:35,560 kreye epi louvri outfile a ki w ap ale nan mete nan 10 00:00:35,560 --> 00:00:38,020 rdimansyone imaj pous 11 00:00:38,020 --> 00:00:42,050 Lè sa a, paske w ap rèsizin, ak paske li nan yon bitmap, li yon header, se konsa 12 00:00:42,050 --> 00:00:46,080 w ap ale nan tou mete header a enfòmasyon pou outfile a, 13 00:00:46,080 --> 00:00:47,950 epi ekri ki pous 14 00:00:47,950 --> 00:00:51,850 Lè sa a, w ap ale nan li nan scanline a nan infile a, 15 00:00:51,850 --> 00:00:56,890 pixel-pa-pixel, rèsizin orizontal ak ekri sa yo piksèl nan la 16 00:00:56,890 --> 00:01:00,910 outfile, jan sa espesifye pa echèl itilizatè a la. 17 00:01:00,910 --> 00:01:03,940 >> W ap ale nan sonje ajoute padding si sa nesesè. 18 00:01:03,940 --> 00:01:05,400 Plis sou sa pita. 19 00:01:05,400 --> 00:01:07,790 Lè sa a,, tou rdimansyonman vètikal. 20 00:01:07,790 --> 00:01:08,890 OK. 21 00:01:08,890 --> 00:01:13,280 Se konsa, sa a ki pral gen yon ti kras pi plis konplike pase Ki moun ki fè l ', men 22 00:01:13,280 --> 00:01:18,310 sa ki nan sanble, se paske copy.c pral, ankò, pwouve trè itil. 23 00:01:18,310 --> 00:01:23,160 Sonje ke copy.c louvri yon dosye, Mizajou nan enfòmasyon yo nan header pou la 24 00:01:23,160 --> 00:01:28,250 outfile, lè sa a li nan scanline a, pixel-pa-pixel, ekri chak pixel 25 00:01:28,250 --> 00:01:30,510 nan scanline dosye a pwodiksyon an. 26 00:01:30,510 --> 00:01:37,040 >> Se konsa, ankò, premye etap ou ka pwobableman dwe CP, copy.c, resize.c 27 00:01:37,040 --> 00:01:40,560 nan anyè PSET5 ou. 28 00:01:40,560 --> 00:01:43,920 Sonje menm si, anvan ou kopi li, a asire w ke ou konprann 29 00:01:43,920 --> 00:01:46,600 copy.c trè byen. 30 00:01:46,600 --> 00:01:47,620 OK. 31 00:01:47,620 --> 00:01:49,880 >> Se konsa, kite a louvri yon dosye. 32 00:01:49,880 --> 00:01:50,870 Ou konnen ki jan yo fè sa. 33 00:01:50,870 --> 00:01:52,600 Mwen pral kite sa gade ou. 34 00:01:52,600 --> 00:01:56,050 Apre sa, mete ajou enfòmasyon an header pou outfile la. 35 00:01:56,050 --> 00:01:59,240 Paske nou gen yon nouvo bitmap, nou gen nouvo enfòmasyon header. 36 00:01:59,240 --> 00:02:00,970 Ki sa ki chanje isit la? 37 00:02:00,970 --> 00:02:06,000 Oke, gwosè a dosye ki pral chanje paske nou ap ale nan gen plis 38 00:02:06,000 --> 00:02:07,900 piksèl pase anvan. 39 00:02:07,900 --> 00:02:11,060 Gwosè a imaj se, konsa, tou pral chanje, kòm se nan 40 00:02:11,060 --> 00:02:13,050 lajè ak wotè la. 41 00:02:13,050 --> 00:02:17,180 >> Se konsa, ki varyab moun sa yo ki, egzakteman? 42 00:02:17,180 --> 00:02:20,960 Byen, si w gade nan header a enfòmasyon, ou wè gen 43 00:02:20,960 --> 00:02:25,640 biSizeImage, ki reprezante manm nan gwosè nan imaj la nan bytes, 44 00:02:25,640 --> 00:02:28,340 ki gen ladan piksèl ak pwotèj. 45 00:02:28,340 --> 00:02:32,520 biWidth se lajè a nan imaj la nan piksèl, mwens padding la. 46 00:02:32,520 --> 00:02:35,580 biHeight se wotè a nan imaj la nan piksèl. 47 00:02:35,580 --> 00:02:39,200 Se konsa, sa yo genyen nan yo nan la strukt BITMAPFILEHEADER ak 48 00:02:39,200 --> 00:02:40,390 BITMAPINFOHEADER. 49 00:02:40,390 --> 00:02:45,300 Ou ka di ki se yon sèl ki pa ale nan bmp.h ak gade nan nan 50 00:02:45,300 --> 00:02:49,670 Konstri BITMAPINFOHEADER ak wè ki varyab yo ki nan lis la. 51 00:02:49,670 --> 00:02:54,700 >> Se konsa, yo mete header nan outfiles enfòmasyon, w ap ale nan vle 52 00:02:54,700 --> 00:02:57,025 chanje valè sa yo nan la wotè ak lajè li an. 53 00:02:57,025 --> 00:03:00,570 Men, chans yo se, ou ta ka bezwen kèk nan enfòmasyon header infile la 54 00:03:00,570 --> 00:03:03,670 pita, se konsa pi bon yo kenbe tras nan tou de. 55 00:03:03,670 --> 00:03:07,770 Men ou dwe trè klè ak varyab ou non pou ke ou pa fè sa aksidantèlman 56 00:03:07,770 --> 00:03:12,490 ekri valè yo kòrèk nan header a pou outfile la. 57 00:03:12,490 --> 00:03:16,160 >> Se konsa, kounye a kite a jwenn li nan scanline pixel nan-pa-pixel. 58 00:03:16,160 --> 00:03:20,210 Yon fwa ankò, nou pral tounen vin jwenn konfyans nou ranpli I O bibliyotèk /, ak gade nan 59 00:03:20,210 --> 00:03:22,100 fonksyon an frèd. 60 00:03:22,100 --> 00:03:26,150 frèd pran nan yon konsèy nan yon konstri ki pral gen bytes yo ki 61 00:03:26,150 --> 00:03:30,130 w ap li nan, gwosè a nan chak eleman ke w ap lekti - 62 00:03:30,130 --> 00:03:34,410 ankò, sizof a pwal itil fonksyone isit la, ki kantite a 63 00:03:34,410 --> 00:03:38,820 eleman nan gwosè, gwosè li, ke w ap lekti nan, ak Lè sa a, finalman, an 64 00:03:38,820 --> 00:03:41,310 inpointer, dosye a ki w ap li nan. 65 00:03:41,310 --> 00:03:46,770 Se konsa, ou ap pran eleman nimewo nan gwosè soti nan inpointer, ak 66 00:03:46,770 --> 00:03:49,040 mete yo nan done. 67 00:03:49,040 --> 00:03:51,695 >> Koulye a, li lè yo rdimansyonman orizontal. 68 00:03:51,695 --> 00:03:56,880 Si n egal 2, Lè sa a, pou chak pixel nan infile a, nou ap ale nan ekri li 69 00:03:56,880 --> 00:04:00,870 de fwa nan outfile la. 70 00:04:00,870 --> 00:04:02,210 Ki jan nou ekri dosye? 71 00:04:02,210 --> 00:04:06,400 Oke, nou gen fonksyon an fwrite, se konsa nou te pran konsèy nan konstri la 72 00:04:06,400 --> 00:04:10,170 ki gen bytes yo ke w ap lekri nan men, ak Lè sa a, nou pase nan 73 00:04:10,170 --> 00:04:14,430 gwosè, nimewo, ak pwodiksyon an, kote w ap ale nan dwe ekri sa a. 74 00:04:14,430 --> 00:04:19,200 Lè sa a, yo repete yon pwosesis, yo pral kapab yon repete senp pou bouk. 75 00:04:19,200 --> 00:04:21,740 >> Men, nou bezwen sonje yo ajoute padding pous 76 00:04:21,740 --> 00:04:26,040 Konsèp la nan padding se ke, byen, chak pixel se twa mòde, men nan 77 00:04:26,040 --> 00:04:28,940 gwosè nan chak scanline dwe gen yon miltip nan 4 bytes. 78 00:04:28,940 --> 00:04:33,660 Se konsa, si kantite a nan piksèl se pa yon plizyè nan 4, nou bezwen ajoute kèk 79 00:04:33,660 --> 00:04:36,630 padding, ki se jis zero. 80 00:04:36,630 --> 00:04:42,130 Koulye a, kontrèman ak Ki moun ki fè l ', ak kontrèman ak kopi, Lè sa a, infile imaj ak nan 81 00:04:42,130 --> 00:04:44,370 outfile dosye yo te diferan gen diferan padding paske yo ap 82 00:04:44,370 --> 00:04:46,360 diferan larjer. 83 00:04:46,360 --> 00:04:46,690 >> OK. 84 00:04:46,690 --> 00:04:51,050 Se konsa, petèt yon fòmil ta vini an sou la men isit la. 85 00:04:51,050 --> 00:04:55,120 Mwen pral kite li ak ou pou jwenn li soti, men di ou ke, yo ekri padding, 86 00:04:55,120 --> 00:04:59,360 byen, li nan jis yon fonksyon fputc senp, pase nan karaktè a 87 00:04:59,360 --> 00:05:02,200 ke ou vle ekri, epi Lè sa a, konsèy la dosye ke ou 88 00:05:02,200 --> 00:05:04,280 vle yo pou yo ekri. 89 00:05:04,280 --> 00:05:08,670 Se konsa, kounye a ke nou te rdimansyone orizontal, ak Lè sa a, itilize padding, 90 00:05:08,670 --> 00:05:12,030 sonje ke ou bezwen pou avanse pou pi dosye ou pozisyon endikatè, paske ou 91 00:05:12,030 --> 00:05:14,480 pa ka frèd nan pwotèj. 92 00:05:14,480 --> 00:05:18,230 Se konsa, ou vle asire w ke dosye ou endikatè pozisyon nan infile la 93 00:05:18,230 --> 00:05:19,980 se nan pwen ki kòrèk la. 94 00:05:19,980 --> 00:05:23,970 Paske nou vle tou rdimansyonman vètikal. 95 00:05:23,970 --> 00:05:27,090 Nou pa ka jis detire li orizontal, paske chak bezwen ranje 96 00:05:27,090 --> 00:05:30,370 yo dwe kopye fwa n. 97 00:05:30,370 --> 00:05:33,050 >> Koulye a, gen plizyè diferan fason yo fè sa. 98 00:05:33,050 --> 00:05:39,010 Se konsa, yon sèl, nou ka sèvi ak yon metòd reyekri, nan ke nou sonje tout piksèl yo 99 00:05:39,010 --> 00:05:42,840 nan yon ranje ki te bay nan yon etalaj, ak Lè sa a, nou ekri ki etalaj kòm 100 00:05:42,840 --> 00:05:44,730 anpil fwa jan sa nesesè. 101 00:05:44,730 --> 00:05:49,530 Oswa gen nan metòd la rekopye kote, apre ou fin li nan yon sèl ranje nan infile la 102 00:05:49,530 --> 00:05:53,530 ak Lè sa a lekri ke nan outfile a, ajoute padding a, nou fik 103 00:05:53,530 --> 00:05:57,250 Retounen nan kòmansman an nan ranje orijinal la, ak Lè sa a, repete orizontal la 104 00:05:57,250 --> 00:05:58,710 rèsizin apati de la. 105 00:05:58,710 --> 00:06:02,280 Kèlkeswa metòd la, menm si, ou pral vle chak pixel ap repete 106 00:06:02,280 --> 00:06:06,370 n fwa, ak tout ranje yo dwe repete fwa n tou. 107 00:06:06,370 --> 00:06:09,160 >> Ak sa, ou pral gen bitmap pi gwo pase lavi. 108 00:06:09,160 --> 00:06:11,760 Non mwen se Zamyla, e sa se CS50. 109 00:06:11,760 --> 00:06:19,542