1 00:00:00,000 --> 00:00:10,210 >> [Seinm ceoil] 2 00:00:10,210 --> 00:00:13,320 >> ZAMYLA Chan: buille Let rudaí suas le Athraigh. 3 00:00:13,320 --> 00:00:17,710 I Athraigh, beidh an t-úsáideoir pas a fháil i, trí na n-orduithe, íomhá bitmap a 4 00:00:17,710 --> 00:00:21,860 ba mhaith leat iad a scála ag roinnt go bhfuil siad pas a fháil freisin i, 5 00:00:21,860 --> 00:00:23,770 i na n-orduithe. 6 00:00:23,770 --> 00:00:24,690 Conas is féidir linn é seo a? 7 00:00:24,690 --> 00:00:28,270 >> Bhuel, rudaí chéad chéad, a ligean ar briseadh seo síos i céimeanna. 8 00:00:28,270 --> 00:00:31,510 Tá tú ag dul a iarraidh a oscailt an infile go dtugann siad duit, chomh maith le 9 00:00:31,510 --> 00:00:35,560 a chruthú agus a oscailt an comhbhrí a tú ag dul a chur ar an 10 00:00:35,560 --> 00:00:38,020 íomhá resized isteach 11 00:00:38,020 --> 00:00:42,050 Ansin, mar atá tú méid a athrú, agus mar tá sé ina bitmap, sé header, mar sin 12 00:00:42,050 --> 00:00:46,080 tú ag dul a thabhairt cothrom le dáta freisin an header faisnéis don comhbhrí, 13 00:00:46,080 --> 00:00:47,950 agus scríobh go isteach 14 00:00:47,950 --> 00:00:51,850 Ansin, tá tú ag dul a léamh i an scanline an infile, 15 00:00:51,850 --> 00:00:56,890 picteilín-ar-picteilín, méid a athrú go cothrománach agus scríobh iad siúd pixel isteach 16 00:00:56,890 --> 00:01:00,910 ar comhbhrí, mar atá sonraithe ag scála an úsáideora. 17 00:01:00,910 --> 00:01:03,940 >> Tá tú ag dul a mheabhrú a cuir stuála réir mar is gá. 18 00:01:03,940 --> 00:01:05,400 Níos mó ar sin ina dhiaidh. 19 00:01:05,400 --> 00:01:07,790 Agus ansin, Athraigh freisin go hingearach. 20 00:01:07,790 --> 00:01:08,890 OK. 21 00:01:08,890 --> 00:01:13,280 Mar sin, tá sé seo ag dul a bheith beagán níos mó casta ná Cé Arna dhéanamh sé, ach 22 00:01:13,280 --> 00:01:18,310 cad cosúil é a bheidh an ní féidir dí, arís, a chruthú an-úsáideach. 23 00:01:18,310 --> 00:01:23,160 Cuimhnigh go osclaíonn ní féidir dí comhad, cothrom le dáta an t-eolas header don 24 00:01:23,160 --> 00:01:28,250 ar comhbhrí, léann ansin isteach an scanline, picteilín-ar-picteilín, scríobh gach picteilín 25 00:01:28,250 --> 00:01:30,510 isteach an comhad a aschur ar scanline. 26 00:01:30,510 --> 00:01:37,040 >> Mar sin, arís, d'fhéadfadh do chéad chéim dócha a chur chun cp, ní féidir dí, resize.c 27 00:01:37,040 --> 00:01:40,560 isteach i do eolaire PSET5. 28 00:01:40,560 --> 00:01:43,920 Cuimhnigh cé, sula chóipeáil tú é, a dhéanamh cinnte go dtuigeann tú 29 00:01:43,920 --> 00:01:46,600 ní féidir dí-maith. 30 00:01:46,600 --> 00:01:47,620 OK. 31 00:01:47,620 --> 00:01:49,880 >> Mar sin, a ligean ar a oscailt comhad. 32 00:01:49,880 --> 00:01:50,870 Tá a fhios agat conas a dhéanamh. 33 00:01:50,870 --> 00:01:52,600 Tá mé ag dul a fhágáil go duit. 34 00:01:52,600 --> 00:01:56,050 Next, an t-eolas header cothrom le dáta don comhbhrí. 35 00:01:56,050 --> 00:01:59,240 Toisc go bhfuil muid ag bitmap nua, ní mór dúinn eolas header nua. 36 00:01:59,240 --> 00:02:00,970 Cad atá ag athrú anseo? 37 00:02:00,970 --> 00:02:06,000 Bhuel, tá an méid comhaid ag dul a athrú toisc go bhfuil muid ag dul a bheith níos mó 38 00:02:06,000 --> 00:02:07,900 pixel ná riamh. 39 00:02:07,900 --> 00:02:11,060 Is é an méid íomhá, dá bhrí sin, freisin, ag dul a athrú, mar go bhfuil an 40 00:02:11,060 --> 00:02:13,050 leithead agus airde. 41 00:02:13,050 --> 00:02:17,180 >> Mar sin, a bhfuil na hathróga, go díreach? 42 00:02:17,180 --> 00:02:20,960 Bhuel, má fhéachann tú isteach an header faisnéise, a fheiceann tú go bhfuil 43 00:02:20,960 --> 00:02:25,640 biSizeImage, a léiríonn an t-iomlán méid an íomhá i bytes, 44 00:02:25,640 --> 00:02:28,340 lena n-áirítear picteilín agus stuála. 45 00:02:28,340 --> 00:02:32,520 Is biWidth an leithead an íomhá i picteilíni, lúide an stuáil. 46 00:02:32,520 --> 00:02:35,580 Is biHeight an airde an íomhá i pixel. 47 00:02:35,580 --> 00:02:39,200 Agus mar sin iad siúd le fáil i structs BITMAPFILEHEADER agus 48 00:02:39,200 --> 00:02:40,390 BITMAPINFOHEADER. 49 00:02:40,390 --> 00:02:45,300 Is féidir leat insint a bhfuil ceann amháin ag dul chun bmp.h agus ag féachaint ar an 50 00:02:45,300 --> 00:02:49,670 Struct BITMAPINFOHEADER agus go bhfaca atá liostaithe athróg ann. 51 00:02:49,670 --> 00:02:54,700 >> Mar sin, a thabhairt cothrom le dáta an header outfiles eolas, tá tú ag dul a iarraidh a 52 00:02:54,700 --> 00:02:57,025 athrú na luachanna ar an airde agus leithead. 53 00:02:57,025 --> 00:03:00,570 Ach tá seans, d'fhéadfadh gá duit roinnt faisnéis header an infile ar 54 00:03:00,570 --> 00:03:03,670 ina dhiaidh sin, mar sin is fearr súil a choinneáil ar an dá. 55 00:03:03,670 --> 00:03:07,770 Ach a bheith an-soiléir le do athraitheach ainmneacha ionas go mbeidh tú a dhéanamh nach thaisme 56 00:03:07,770 --> 00:03:12,490 scríobh na luachanna mícheart i an header an comhbhrí. 57 00:03:12,490 --> 00:03:16,160 >> Mar sin, anois a ligean ar a fháil ar léamh i an scanline picteilín-ar-picteilín. 58 00:03:16,160 --> 00:03:20,210 Arís, táimid ag dul chun dul go dtí ár trusty comhad leabharlann I / A, agus breathnú ar 59 00:03:20,210 --> 00:03:22,100 an fheidhm fread. 60 00:03:22,100 --> 00:03:26,150 Bíonn fread i pointeoir le struct Beidh go bhfuil an beart a 61 00:03:26,150 --> 00:03:30,130 atá á léamh agat i, an méid de gach eilimint go bhfuil tú ag léamh - 62 00:03:30,130 --> 00:03:34,410 arís, tá o, ag dul a bheith úsáideach feidhmiú anseo, uimhir an 63 00:03:34,410 --> 00:03:38,820 gnéithe den méid, méid, go bhfuil tú léamh i, agus ansin ar deireadh, an 64 00:03:38,820 --> 00:03:41,310 inpointer, an comhad a atá á léamh agat as. 65 00:03:41,310 --> 00:03:46,770 Mar sin, tá tú ag cur gnéithe líon méid ó inpointer, agus 66 00:03:46,770 --> 00:03:49,040 iad a chur isteach sonraí. 67 00:03:49,040 --> 00:03:51,695 >> Anois, tá sé in am a athrú go cothrománach. 68 00:03:51,695 --> 00:03:56,880 más ionann n 2, ansin do gach picteilín i an infile, táimid ag dul a scríobh sé 69 00:03:56,880 --> 00:04:00,870 faoi ​​dhó sa comhbhrí. 70 00:04:00,870 --> 00:04:02,210 Conas is féidir linn a comhaid a scríobh? 71 00:04:02,210 --> 00:04:06,400 Bhuel, ní mór dúinn an fheidhm fwrite, mar sin againn atá déanta ar an pointeoir leis an struct 72 00:04:06,400 --> 00:04:10,170 go bhfuil an beart a bhfuil tú scríbhinn ó, agus ansin pas againn i 73 00:04:10,170 --> 00:04:14,430 méid, líon, agus an t-aschur, i gcás ina tú ag dul a bheith ag scríobh go. 74 00:04:14,430 --> 00:04:19,200 Agus ansin a athdhéanamh próiseas a bheidh, a bheith in ann atriallach simplí do lúb. 75 00:04:19,200 --> 00:04:21,740 >> Ach ní mór dúinn a mheabhrú stuáil a chur isteach 76 00:04:21,740 --> 00:04:26,040 Is é an coincheap de stuáil sin, go maith, Tá gach picteilín trí bites, ach 77 00:04:26,040 --> 00:04:28,940 méid de gach ní mór scanline a bheith iolraí de 4 bytes. 78 00:04:28,940 --> 00:04:33,660 Mar sin, más rud é nach bhfuil an líon na n-pixel ar iolraí de 4, ní mór dúinn a chur ar roinnt 79 00:04:33,660 --> 00:04:36,630 stuáil, a bhfuil ach nialais. 80 00:04:36,630 --> 00:04:42,130 Anois, murab ionann agus Cé Arna dhéanamh sé, agus murab ionann agus cóip, ansin íomhá infile agus an 81 00:04:42,130 --> 00:04:44,370 ASCHOMHAD comhad ina scríobhfar tá bheith difriúil stuáil éagsúla toisc go bhfuil siad 82 00:04:44,370 --> 00:04:46,360 leithid éagsúla. 83 00:04:46,360 --> 00:04:46,690 >> OK. 84 00:04:46,690 --> 00:04:51,050 Mar sin, b'fhéidir go mbeadh foirmle teacht i handy anseo. 85 00:04:51,050 --> 00:04:55,120 Feicfidh mé é a fhágáil chun tú a aimsiú sé amach, ach insint duit go bhfuil, stuáil a scríobh, 86 00:04:55,120 --> 00:04:59,360 maith, tá sé ach feidhm fputc simplí, dul san carachtar 87 00:04:59,360 --> 00:05:02,200 gur mhaith leat a scríobh, agus ansin an pointeoir comhaid go bhfuil tú 88 00:05:02,200 --> 00:05:04,280 ag iarraidh a scríobh chuig. 89 00:05:04,280 --> 00:05:08,670 Mar sin anois go atá againn resized go cothrománach, agus ansin a úsáidtear stuáil, 90 00:05:08,670 --> 00:05:12,030 cuimhnigh gur gá duit a bhogadh do chomhad táscaire seasamh, toisc go bhfuil tú 91 00:05:12,030 --> 00:05:14,480 Ní féidir fread isteach stuáil. 92 00:05:14,480 --> 00:05:18,230 Mar sin, ba mhaith leat a dhéanamh cinnte go bhfuil do chomhad táscaire seasamh sa infile 93 00:05:18,230 --> 00:05:19,980 Is ag an bpointe ceart. 94 00:05:19,980 --> 00:05:23,970 Mar ba mhaith linn freisin chun Athraigh go hingearach. 95 00:05:23,970 --> 00:05:27,090 Ní féidir linn a stráice ach é go cothrománach, mar gheall ar gach do riachtanais a chéile 96 00:05:27,090 --> 00:05:30,370 a chóipeáil amanna n. 97 00:05:30,370 --> 00:05:33,050 >> Anois, tá roinnt éagsúla bealaí seo a dhéanamh. 98 00:05:33,050 --> 00:05:39,010 Mar sin, ceann amháin, is féidir linn a úsáid modh Athscríobh, i gur cuimhin linn gach ceann de na pixel 99 00:05:39,010 --> 00:05:42,840 ar a chéile tugtha in eagar, agus ansin scríobh againn go eagar mar 100 00:05:42,840 --> 00:05:44,730 mhéad uair mar is gá. 101 00:05:44,730 --> 00:05:49,530 Nó níl an modh recopy áit, tar éis a léamh i sraith amháin sa infile 102 00:05:49,530 --> 00:05:53,530 agus ansin scríobh go isteach an comhbhrí, a chur leis an stuáil, fseek againn 103 00:05:53,530 --> 00:05:57,250 ar ais go dtí tús an tsraith bunaidh, agus ansin arís ar an gcothromán 104 00:05:57,250 --> 00:05:58,710 méid a athrú ó ann. 105 00:05:58,710 --> 00:06:02,280 Beag beann ar an modh, áfach, beidh tú Ba mhaith gach picteilín a athdhéanamh 106 00:06:02,280 --> 00:06:06,370 n-uaire, agus gach as a chéile a bheith arís agus arís eile amanna n chomh maith. 107 00:06:06,370 --> 00:06:09,160 >> Leis sin, beidh tú ag bitmap níos mó ná saol. 108 00:06:09,160 --> 00:06:11,760 Is é mo ainm Zamyla, agus tá sé seo CS50. 109 00:06:11,760 --> 00:06:19,542