1 00:00:00,000 --> 00:00:10,210 >> [Daqq tal-mużika] 2 00:00:10,210 --> 00:00:13,320 >> ZAMYLA Chan: blow Ejja affarijiet up ma 'resize. 3 00:00:13,320 --> 00:00:17,710 Fil resize, l-utent se jgħaddu, permezz kmand tal-linja, immaġni Bitmap li 4 00:00:17,710 --> 00:00:21,860 huma jridu li inti iskala minn numru li huma wkoll tgħaddi fi, 5 00:00:21,860 --> 00:00:23,770 fil-linja tal-kmand. 6 00:00:23,770 --> 00:00:24,690 Kif nistgħu nagħmlu dan? 7 00:00:24,690 --> 00:00:28,270 >> Ukoll, L-ewwelnett, ejja din tinqasam passi. 8 00:00:28,270 --> 00:00:31,510 Int ser tixtieq li tiftaħ il-infile li huma jagħtuk, kif ukoll 9 00:00:31,510 --> 00:00:35,560 joħolqu u tiftaħ il-outfile li int ser tpoġġi l- 10 00:00:35,560 --> 00:00:38,020 image daqs ieħor pulzieri 11 00:00:38,020 --> 00:00:42,050 Imbagħad, għax int ristrutturazzjoni, u għaliex dan huwa Bitmap, din header, hekk 12 00:00:42,050 --> 00:00:46,080 int ser taġġorna wkoll il-header informazzjoni għall-outfile, 13 00:00:46,080 --> 00:00:47,950 u jiktbu dak pulzieri 14 00:00:47,950 --> 00:00:51,850 Imbagħad, int ser jinqara fil- l scanline tal-infile, 15 00:00:51,850 --> 00:00:56,890 pixel--pixel minn, resizing orizzontalment u l-kitba dawk pixels fil- 16 00:00:56,890 --> 00:01:00,910 outfile, kif speċifikat mill-iskala l-utent. 17 00:01:00,910 --> 00:01:03,940 >> Int ser tiftakar li żid padding kif meħtieġ. 18 00:01:03,940 --> 00:01:05,400 Aktar dwar dan aktar tard. 19 00:01:05,400 --> 00:01:07,790 U mbagħad, ukoll resize vertikalment. 20 00:01:07,790 --> 00:01:08,890 OK. 21 00:01:08,890 --> 00:01:13,280 Allura dan se jkun ftit aktar ikkumplikat minn Who Magħmul Huwa, iżda 22 00:01:13,280 --> 00:01:18,310 dak li huwa simili hija li copy.c se, għal darb'oħra, jkunu utli ħafna. 23 00:01:18,310 --> 00:01:23,160 Ftakar li copy.c jiftaħ fajl, jaġġorna l-informazzjoni header għall- 24 00:01:23,160 --> 00:01:28,250 outfile, allura jaqra fil-scanline, pixel-'pixel mill-kitba kull pixel 25 00:01:28,250 --> 00:01:30,510 fil scanline-fajl output tal. 26 00:01:30,510 --> 00:01:37,040 >> Għalhekk għal darb'oħra, l-ewwel pass tiegħek jista 'probabbilment jkun li cp, copy.c, resize.c 27 00:01:37,040 --> 00:01:40,560 fis direttorju PSET5 tiegħek. 28 00:01:40,560 --> 00:01:43,920 Ftakar għalkemm, qabel ma jibagħtu kopja tagħha, biex taċċerta ruħek li tifhem 29 00:01:43,920 --> 00:01:46,600 copy.c sewwa ħafna. 30 00:01:46,600 --> 00:01:47,620 OK. 31 00:01:47,620 --> 00:01:49,880 >> Mela ejja jiftaħ fajl. 32 00:01:49,880 --> 00:01:50,870 Inti taf kif għandek tagħmel dan. 33 00:01:50,870 --> 00:01:52,600 Jien ser leave li lilek. 34 00:01:52,600 --> 00:01:56,050 Sussegwentement, jaġġornaw l-informazzjoni header għall-outfile. 35 00:01:56,050 --> 00:01:59,240 Għaliex għandna Bitmap ġdid, għandna info header ġdid. 36 00:01:59,240 --> 00:02:00,970 X'hemm jinbidlu hawn? 37 00:02:00,970 --> 00:02:06,000 Ukoll, id-daqs fajl huwa se jibdlu għaliex aħna qed tmur li jkollhom aktar 38 00:02:06,000 --> 00:02:07,900 pixels minn qabel. 39 00:02:07,900 --> 00:02:11,060 Id-daqs immaġini huwa, għalhekk, ukoll se jibdlu, kif inhu l- 40 00:02:11,060 --> 00:02:13,050 wisa 'u l-għoli. 41 00:02:13,050 --> 00:02:17,180 >> Allura għalih il-varjabbli huma dawk, eżattament? 42 00:02:17,180 --> 00:02:20,960 Ukoll, jekk inti tħares lejn il-header informazzjoni, tara hemm 43 00:02:20,960 --> 00:02:25,640 biSizeImage, li jirrappreżenta t-total daqs tal-immaġini fil bytes, 44 00:02:25,640 --> 00:02:28,340 inklużi pixels u padding. 45 00:02:28,340 --> 00:02:32,520 biWidth huwa l-wisa 'l-immaġini pixels, nieqes l-padding. 46 00:02:32,520 --> 00:02:35,580 biHeight huwa l-għoli ta ' l-immaġini fil pixels. 47 00:02:35,580 --> 00:02:39,200 U hekk dawk jinsabu fil- structs BITMAPFILEHEADER u 48 00:02:39,200 --> 00:02:40,390 BITMAPINFOHEADER. 49 00:02:40,390 --> 00:02:45,300 Tista 'tgħid liema waħda hija li minn ser bmp.h u tħares lejn l- 50 00:02:45,300 --> 00:02:49,670 Struct BITMAPINFOHEADER u jaraw għalih il-varjabbli huma elenkati hemmhekk. 51 00:02:49,670 --> 00:02:54,700 >> Allura biex taġġorna l-header outfiles informazzjoni, int ser jridu 52 00:02:54,700 --> 00:02:57,025 tibdel dawk il-valuri tal- għoli u l-wisa. 53 00:02:57,025 --> 00:03:00,570 Iżda ċansijiet huma, inti jista 'jkollok bżonn xi ta 'informazzjoni header tal-infile tal 54 00:03:00,570 --> 00:03:03,670 aktar tard, hekk aħjar li jżommu rekord tat-tnejn. 55 00:03:03,670 --> 00:03:07,770 Iżda tkun ċara ħafna ma 'varjabbli tiegħek ismijiet hekk li inti ma aċċidentalment 56 00:03:07,770 --> 00:03:12,490 ikteb il-valuri skorretti fir l-header għall-outfile. 57 00:03:12,490 --> 00:03:16,160 >> Allura issa ejja nikseb qari fis l-pixel-by pixel scanline. 58 00:03:16,160 --> 00:03:20,210 Għal darb'oħra, aħna qed tmur li jduru għal trusty tagħna fajl I / O librerija, u ħarsa lejn 59 00:03:20,210 --> 00:03:22,100 il-funzjoni fread. 60 00:03:22,100 --> 00:03:26,150 fread jieħu fil pointer għal Istituzzjonjijiet li se jkun fiha l-bytes li 61 00:03:26,150 --> 00:03:30,130 int qari, id-daqs ta 'kull element li qed taqra - 62 00:03:30,130 --> 00:03:34,410 għal darb'oħra, sizeof se tkun utli jiffunzjonaw hawn, in-numru tal- 63 00:03:34,410 --> 00:03:38,820 elementi ta 'daqs, id-daqs, li int qari, u mbagħad finalment, il- 64 00:03:38,820 --> 00:03:41,310 inpointer, il-fajl li int qari minn. 65 00:03:41,310 --> 00:03:46,770 Allura inti qed tieħu elementi numru ta 'daqs minn inpointer, u 66 00:03:46,770 --> 00:03:49,040 tqegħid tagħhom fiċ-data. 67 00:03:49,040 --> 00:03:51,695 >> Issa wasal iż-żmien biex resize orizzontalment. 68 00:03:51,695 --> 00:03:56,880 jekk n ugwali 2, allura għal kull pixel fil- l infile, aħna qed tmur biex tiktibha 69 00:03:56,880 --> 00:04:00,870 darbtejn fil-outfile. 70 00:04:00,870 --> 00:04:02,210 Kif nistgħu jiktbu fajls? 71 00:04:02,210 --> 00:04:06,400 Well, aħna għandna l-funzjoni fwrite, hekk aħna ħadt l-pointer għall-Istituzzjonjijiet 72 00:04:06,400 --> 00:04:10,170 li fiha l-bytes li int miktub minn, u allura aħna jgħaddu 73 00:04:10,170 --> 00:04:14,430 daqs, in-numru, u l-output, fejn int ser tkun bil-miktub dan. 74 00:04:14,430 --> 00:04:19,200 U mbagħad jirrepeti proċess, se jkun kapaċi a iterattiv sempliċi għall-loop. 75 00:04:19,200 --> 00:04:21,740 >> Iżda għandna bżonn biex tiftakar żid padding pulzieri 76 00:04:21,740 --> 00:04:26,040 Il-kunċett ta 'padding hija li, ukoll, kull pixel huwa tliet bites, iżda l- 77 00:04:26,040 --> 00:04:28,940 daqs ta 'kull must scanline ikun multiplu ta '4 bytes. 78 00:04:28,940 --> 00:04:33,660 Allura jekk in-numru ta 'pixels mhuwiex multiplu ta '4, għandna bżonn li żżid xi 79 00:04:33,660 --> 00:04:36,630 ikkuttunar, li huwa biss zeroes. 80 00:04:36,630 --> 00:04:42,130 Issa, b'differenza Who Magħmul Huwa, u b'differenza kopja, imbagħad immaġni infile u l- 81 00:04:42,130 --> 00:04:44,370 fajl outfile jkunu jkollhom differenti ikkuttunar differenti għaliex qed 82 00:04:44,370 --> 00:04:46,360 b'wisa 'differenti. 83 00:04:46,360 --> 00:04:46,690 >> OK. 84 00:04:46,690 --> 00:04:51,050 Allura forsi formula kieku jaqgħu fil handy hawn. 85 00:04:51,050 --> 00:04:55,120 I ser tħalli f'idejn għalik li ssib it out, iżda jgħidlek li, jiktbu ikkuttunar, 86 00:04:55,120 --> 00:04:59,360 ukoll, huwa biss funzjoni fputc sempliċi, tgħaddi fil-karattru 87 00:04:59,360 --> 00:05:02,200 li inti tixtieq li tikteb, u mbagħad il-pointer fajl li inti 88 00:05:02,200 --> 00:05:04,280 tixtieq li tikteb. 89 00:05:04,280 --> 00:05:08,670 Allura issa li konna daqs ieħor orizzontalment, u imbagħad jintuża padding, 90 00:05:08,670 --> 00:05:12,030 ftakar li għandek bżonn biex jimxu fajl tiegħek indikatur tal-pożizzjoni, għaliex inti 91 00:05:12,030 --> 00:05:14,480 ma tistax fread fis padding. 92 00:05:14,480 --> 00:05:18,230 Allura inti tixtieq li tagħmel ċert li l-fajl tiegħek indikatur tal-pożizzjoni fil-infile 93 00:05:18,230 --> 00:05:19,980 hija fil-punt korretta. 94 00:05:19,980 --> 00:05:23,970 Għaliex aħna rridu wkoll li resize vertikalment. 95 00:05:23,970 --> 00:05:27,090 Ma nistgħux sempliċement stretch orizzontalment, għaliex kull bżonnijiet ringiela 96 00:05:27,090 --> 00:05:30,370 li jiġu kkupjati n darbiet. 97 00:05:30,370 --> 00:05:33,050 >> Issa, hemm diversi differenti modi biex tagħmel dan. 98 00:05:33,050 --> 00:05:39,010 Allura wieħed, nistgħu nużaw metodu jikteb, fl li aħna niftakru kollha tal-pixels 99 00:05:39,010 --> 00:05:42,840 ta 'ringiela mogħtija fil-firxa, u allura aħna tikteb li array bħala 100 00:05:42,840 --> 00:05:44,730 ħafna drabi kif meħtieġ. 101 00:05:44,730 --> 00:05:49,530 Jew hemm il-metodu recopy fejn, wara l-qari f'ringiela waħda l infile 102 00:05:49,530 --> 00:05:53,530 u mbagħad bil-miktub li fil-outfile, żżid l-ikkuttunar, aħna fseek 103 00:05:53,530 --> 00:05:57,250 lura għall-bidu tal-filliera oriġinali, u mbagħad irrepeti l-orizzontali 104 00:05:57,250 --> 00:05:58,710 resizing minn hemm. 105 00:05:58,710 --> 00:06:02,280 Irrispettivament mill-metodu, għalkemm, inti ser tixtieq kull pixel li jiġu ripetuti 106 00:06:02,280 --> 00:06:06,370 n darbiet, u kull ringiela li jkun n darbiet ripetut kif ukoll. 107 00:06:06,370 --> 00:06:09,160 >> Ma 'dan, inti ser ikollok Bitmap akbar minn ħajja. 108 00:06:09,160 --> 00:06:11,760 Jisimni Zamyla, u dan huwa CS50. 109 00:06:11,760 --> 00:06:19,542