1 00:00:00,000 --> 00:00:10,210 >> [Musika jotzen] 2 00:00:10,210 --> 00:00:13,320 >> ZAMYLA Chan: Dezagun kolpe things up resize batera. 3 00:00:13,320 --> 00:00:17,710 Tamaina aldatzeko, erabiltzaileak igaroko da, bidezko Komando-lerroan, bitmap irudi hori 4 00:00:17,710 --> 00:00:21,860 by eskalatzeko zenbaki bat nahi dute hori ere gainditu dute, 5 00:00:21,860 --> 00:00:23,770 komando lerroan. 6 00:00:23,770 --> 00:00:24,690 Nola egiten dugu? 7 00:00:24,690 --> 00:00:28,270 >> Beno, lehenengo gauza lehen, dezagun Hau hautsi behera urrats sartu. 8 00:00:28,270 --> 00:00:31,510 Infile ireki nahi joan zaren emango dutela, baita 9 00:00:31,510 --> 00:00:35,560 sortu eta outfile zabalduko duten jarri zaren du 10 00:00:35,560 --> 00:00:38,020 tamaina aldatutako irudi sartu 11 00:00:38,020 --> 00:00:42,050 Orduan, zuk, tamaina aldatzen ari delako eta bitmap bat delako, goiburu bat da, beraz, 12 00:00:42,050 --> 00:00:46,080 goiburua ere eguneratu zaren outfile informazio, 13 00:00:46,080 --> 00:00:47,950 eta idatzi horretan sartu 14 00:00:47,950 --> 00:00:51,850 Ondoren, ari den irakurtzen zoazen infile du scanline du, 15 00:00:51,850 --> 00:00:56,890 pixel-by-pixel, horizontalki tamainaz aldatzeko eta pixel horiek idatziz sartu 16 00:00:56,890 --> 00:01:00,910 outfile, zehaztutako moduan erabiltzaile-eskala eginda. 17 00:01:00,910 --> 00:01:03,940 >> Gogoratzeko joan zaren betegarria gehitzeko beharrezko gisa. 18 00:01:03,940 --> 00:01:05,400 Hori aurrerago gehiago. 19 00:01:05,400 --> 00:01:07,790 Eta gero, baita ere, resize bertikalean. 20 00:01:07,790 --> 00:01:08,890 Ados. 21 00:01:08,890 --> 00:01:13,280 Beraz, hau da, pixka bat gehiago izango da Nor egiten da baino zailagoa, baina 22 00:01:13,280 --> 00:01:18,310 zer antzekoa da copy.c izango, berriro ere, frogatzeko oso baliagarria. 23 00:01:18,310 --> 00:01:23,160 Gogoratu copy.c fitxategi bat irekitzen da, goiburua egiteko informazioa eguneratzen 24 00:01:23,160 --> 00:01:28,250 outfile, ondoren scanline sartu irakurtzen du, pixel-by-pixel, pixel bakoitzean idatziz 25 00:01:28,250 --> 00:01:30,510 Irteerako fitxategi-en scanline sartu. 26 00:01:30,510 --> 00:01:37,040 >> Beraz, berriro ere, zure lehenengo urratsa agian ziurrenik cp, copy.c, resize.c izan 27 00:01:37,040 --> 00:01:40,560 Zure Pset5 direktoriora. 28 00:01:40,560 --> 00:01:43,920 Gogoratu ordea, kopiatu aurretik, Ziurtatu ulertzen duzu egiteko 29 00:01:43,920 --> 00:01:46,600 copy.c oso ondo. 30 00:01:46,600 --> 00:01:47,620 Ados. 31 00:01:47,620 --> 00:01:49,880 >> Hargatik ireki fitxategia. 32 00:01:49,880 --> 00:01:50,870 Nola egiten den ezagutzeko aukera izango duzu. 33 00:01:50,870 --> 00:01:52,600 Duten utzi behar duzu noa. 34 00:01:52,600 --> 00:01:56,050 Hurrengoa, eguneratu goiburua informazio outfile da. 35 00:01:56,050 --> 00:01:59,240 Delako bitmap berri bat dugu, goiburuaren informazio berria dugu. 36 00:01:59,240 --> 00:02:00,970 Zer ari da aldatzen? 37 00:02:00,970 --> 00:02:06,000 Beno, fitxategiaren tamaina aldatu egingo da gehiago behar dugu, zeren 38 00:02:06,000 --> 00:02:07,900 lehen baino pixel. 39 00:02:07,900 --> 00:02:11,060 Irudiaren tamaina da, eta horrela, halaber aldatu egingo da, eta baita 40 00:02:11,060 --> 00:02:13,050 zabalera eta altuera. 41 00:02:13,050 --> 00:02:17,180 >> Beraz, horrek aldagaiak dira horiek, zehazki? 42 00:02:17,180 --> 00:02:20,960 Beno, begiratu duzu goiburua sartu bada informazioa, ikusten duzu, ez da 43 00:02:20,960 --> 00:02:25,640 biSizeImage, guztizkoaren horrek adierazten bytetan irudiaren tamaina, 44 00:02:25,640 --> 00:02:28,340 pixel eta betegarria barne. 45 00:02:28,340 --> 00:02:32,520 biWidth irudiaren zabalera da pixeletan, ken betegarria. 46 00:02:32,520 --> 00:02:35,580 biHeight altuera da pixeletan irudian. 47 00:02:35,580 --> 00:02:39,200 Eta, beraz, jasotako structs BITMAPFILEHEADER eta 48 00:02:39,200 --> 00:02:40,390 BITMAPINFOHEADER. 49 00:02:40,390 --> 00:02:45,300 Zein da horren bidez, esan dezakezu ra bmp.h joan eta begira 50 00:02:45,300 --> 00:02:49,670 BITMAPINFOHEADER egiturari eta ikusten bertan aldagai zerrendatzen dira hor. 51 00:02:49,670 --> 00:02:54,700 >> Beraz outfiles goiburua eguneratzeko informazio, ari nahi zoazen 52 00:02:54,700 --> 00:02:57,025 du balio horiek alda altuera eta zabalera. 53 00:02:57,025 --> 00:03:00,570 Baina aukerak dira, agian batzuk behar duzu infile en goiburua informaziorik 54 00:03:00,570 --> 00:03:03,670 geroago, beraz, onena segimendua egiteko, bai. 55 00:03:03,670 --> 00:03:07,770 Baina oso argi zure aldakorra izango Izenak, beraz, ez ustekabean 56 00:03:07,770 --> 00:03:12,490 balioak okerrak idatzi outfile, goiburua. 57 00:03:12,490 --> 00:03:16,160 >> Beraz, orain gaitezen sartu irakurtzeko scanline pixel-by-pixel da. 58 00:03:16,160 --> 00:03:20,210 Berriz ere, gure trusty buelta goaz fitxategia / I lib, eta begiratu 59 00:03:20,210 --> 00:03:22,100 fread funtzioa. 60 00:03:22,100 --> 00:03:26,150 fread erakuslea hartzen egiturari bati duten byte edukiko duten 61 00:03:26,150 --> 00:03:30,130 irakurtzen ari zaren, bakoitzaren tamaina duten irakurtzen ari zaren elementu - 62 00:03:30,130 --> 00:03:34,410 berriro, sizeof da erabilgarria izango funtziona hemen, zenbakiari 63 00:03:34,410 --> 00:03:38,820 tamaina, tamaina elementuak, zarela irakurketa, eta, ondoren, azkenik, 64 00:03:38,820 --> 00:03:41,310 inpointer, fitxategia duzu irakurtzen ari. 65 00:03:41,310 --> 00:03:46,770 Beraz zenbaki elementu hartzen ari zaren inpointer etatik tamaina, eta 66 00:03:46,770 --> 00:03:49,040 ipintzeko datuak sartu. 67 00:03:49,040 --> 00:03:51,695 >> Orain denbora horizontalki tamainaz aldatu da. 68 00:03:51,695 --> 00:03:56,880 n berdin bada 2, ondoren pixel bakoitzeko urtean infile, ari gara idazten joan 69 00:03:56,880 --> 00:04:00,870 outfile urtean bitan. 70 00:04:00,870 --> 00:04:02,210 Nola ez fitxategiak idazten dugu? 71 00:04:02,210 --> 00:04:06,400 Beno, fwrite funtzioa dugu, beraz hartu dugu erakuslea struct izateko 72 00:04:06,400 --> 00:04:10,170 duten byte duzu Oraindik hori du idazten, eta gero pasatzen dugu 73 00:04:10,170 --> 00:04:14,430 tamaina, kopurua, eta irteera, non zoaz ari dela idazten. 74 00:04:14,430 --> 00:04:19,200 Eta ondoren prozesu bat errepikatzeko, izango da gai loop etorriko sinple bat. 75 00:04:19,200 --> 00:04:21,740 >> Baina gogoratu behar dugu betegarria gehitzeko sartu 76 00:04:21,740 --> 00:04:26,040 Betegarria kontzeptua da, bai, pixel bakoitzean hiru ziztadak da, baina 77 00:04:26,040 --> 00:04:28,940 scanline ezinbestekoa bakoitzaren tamaina 4 byte multiplo izan. 78 00:04:28,940 --> 00:04:33,660 Beraz, pixel-kopurua ez bada bat 4 multiploa, batzuk gehitu behar dugu 79 00:04:33,660 --> 00:04:36,630 padding, horrek zero besterik ez da. 80 00:04:36,630 --> 00:04:42,130 Orain, nork egin zuen bezala, eta ez bezala kopia, ondoren infile irudia eta 81 00:04:42,130 --> 00:04:44,370 outfile fitxategia dute ezberdinak dituzte betegarria ezberdinak ari dira delako 82 00:04:44,370 --> 00:04:46,360 zabalera ezberdinak. 83 00:04:46,360 --> 00:04:46,690 >> Ados. 84 00:04:46,690 --> 00:04:51,050 Beraz, agian formula bat litzateke erabilgarri etorriko hemen. 85 00:04:51,050 --> 00:04:55,120 Utziko dizut aurkitu, baina , hori betegarria idazteko esango dizu, 86 00:04:55,120 --> 00:04:59,360 ondo, besterik fputc funtzio sinple bat da, pertsonaiaren igaroz 87 00:04:59,360 --> 00:05:02,200 idatzi nahi duzun, eta ondoren fitxategiaren erakuslea duzula 88 00:05:02,200 --> 00:05:04,280 eta idatzi nahi. 89 00:05:04,280 --> 00:05:08,670 Beraz, orain dela horizontalki tamaina aldatuko dugu, eta gero betegarria erabiltzen, 90 00:05:08,670 --> 00:05:12,030 gogoratzen zure fitxategia mugitu behar duzula posizio-adierazlea, duzulako 91 00:05:12,030 --> 00:05:14,480 ezin betegarria sartu fread. 92 00:05:14,480 --> 00:05:18,230 Beraz, ziurtatu egin nahi duzun zure fitxategia posizio infile adierazlea 93 00:05:18,230 --> 00:05:19,980 Puntu zuzena da. 94 00:05:19,980 --> 00:05:23,970 Ere ez duelako nahi dugu resize bertikalean. 95 00:05:23,970 --> 00:05:27,090 Ezin dugu besterik luzatzeko horizontalki, ilara beharrak behin delako 96 00:05:27,090 --> 00:05:30,370 n aldiz kopiatu beharreko. 97 00:05:30,370 --> 00:05:33,050 >> Orain, badira hainbat Hau egiteko modu. 98 00:05:33,050 --> 00:05:39,010 Beraz, inork, berridazketa metodo bat erabili ahal izango dugu, hemen pixel guztia gogoan dugula 99 00:05:39,010 --> 00:05:42,840 array bat ilara jakin batean, eta ondoren, array hori idatzi genuen bezala 100 00:05:42,840 --> 00:05:44,730 behar duzun aldi guztietan. 101 00:05:44,730 --> 00:05:49,530 Edo han recopy metodoa non da, ilara batean irakurtzen infile ondoren 102 00:05:49,530 --> 00:05:53,530 eta, ondoren, hori idazten outfile sartu, betegarria gehituz, kokapenean fseek dugu 103 00:05:53,530 --> 00:05:57,250 jatorrizko errenkadaren hasierara itzuli, eta gero errepikatu horizontala 104 00:05:57,250 --> 00:05:58,710 hortik tamainaz aldatu. 105 00:05:58,710 --> 00:06:02,280 Sistemari begiratu gabe, ordea, duzu Nahi pixel bakoitzean errepikatu behar den 106 00:06:02,280 --> 00:06:06,370 n aldiz, eta ilara bakoitzean izan n aldiz errepikatzen baita. 107 00:06:06,370 --> 00:06:09,160 >> Horrekin, bitmap izan dituzu bizitza baino handiagoa. 108 00:06:09,160 --> 00:06:11,760 Nire izena Zamyla da, eta hau da CS50. 109 00:06:11,760 --> 00:06:19,542