[Musika jotzen] ZAMYLA Chan: Dezagun kolpe things up resize batera. Tamaina aldatzeko, erabiltzaileak igaroko da, bidezko Komando-lerroan, bitmap irudi hori by eskalatzeko zenbaki bat nahi dute hori ere gainditu dute, komando lerroan. Nola egiten dugu? Beno, lehenengo gauza lehen, dezagun Hau hautsi behera urrats sartu. Infile ireki nahi joan zaren emango dutela, baita sortu eta outfile zabalduko duten jarri zaren du tamaina aldatutako irudi sartu Orduan, zuk, tamaina aldatzen ari delako eta bitmap bat delako, goiburu bat da, beraz, goiburua ere eguneratu zaren outfile informazio, eta idatzi horretan sartu Ondoren, ari den irakurtzen zoazen infile du scanline du, pixel-by-pixel, horizontalki tamainaz aldatzeko eta pixel horiek idatziz sartu outfile, zehaztutako moduan erabiltzaile-eskala eginda. Gogoratzeko joan zaren betegarria gehitzeko beharrezko gisa. Hori aurrerago gehiago. Eta gero, baita ere, resize bertikalean. Ados. Beraz, hau da, pixka bat gehiago izango da Nor egiten da baino zailagoa, baina zer antzekoa da copy.c izango, berriro ere, frogatzeko oso baliagarria. Gogoratu copy.c fitxategi bat irekitzen da, goiburua egiteko informazioa eguneratzen outfile, ondoren scanline sartu irakurtzen du, pixel-by-pixel, pixel bakoitzean idatziz Irteerako fitxategi-en scanline sartu. Beraz, berriro ere, zure lehenengo urratsa agian ziurrenik cp, copy.c, resize.c izan Zure Pset5 direktoriora. Gogoratu ordea, kopiatu aurretik, Ziurtatu ulertzen duzu egiteko copy.c oso ondo. Ados. Hargatik ireki fitxategia. Nola egiten den ezagutzeko aukera izango duzu. Duten utzi behar duzu noa. Hurrengoa, eguneratu goiburua informazio outfile da. Delako bitmap berri bat dugu, goiburuaren informazio berria dugu. Zer ari da aldatzen? Beno, fitxategiaren tamaina aldatu egingo da gehiago behar dugu, zeren lehen baino pixel. Irudiaren tamaina da, eta horrela, halaber aldatu egingo da, eta baita zabalera eta altuera. Beraz, horrek aldagaiak dira horiek, zehazki? Beno, begiratu duzu goiburua sartu bada informazioa, ikusten duzu, ez da biSizeImage, guztizkoaren horrek adierazten bytetan irudiaren tamaina, pixel eta betegarria barne. biWidth irudiaren zabalera da pixeletan, ken betegarria. biHeight altuera da pixeletan irudian. Eta, beraz, jasotako structs BITMAPFILEHEADER eta BITMAPINFOHEADER. Zein da horren bidez, esan dezakezu ra bmp.h joan eta begira BITMAPINFOHEADER egiturari eta ikusten bertan aldagai zerrendatzen dira hor. Beraz outfiles goiburua eguneratzeko informazio, ari nahi zoazen du balio horiek alda altuera eta zabalera. Baina aukerak dira, agian batzuk behar duzu infile en goiburua informaziorik geroago, beraz, onena segimendua egiteko, bai. Baina oso argi zure aldakorra izango Izenak, beraz, ez ustekabean balioak okerrak idatzi outfile, goiburua. Beraz, orain gaitezen sartu irakurtzeko scanline pixel-by-pixel da. Berriz ere, gure trusty buelta goaz fitxategia / I lib, eta begiratu fread funtzioa. fread erakuslea hartzen egiturari bati duten byte edukiko duten irakurtzen ari zaren, bakoitzaren tamaina duten irakurtzen ari zaren elementu - berriro, sizeof da erabilgarria izango funtziona hemen, zenbakiari tamaina, tamaina elementuak, zarela irakurketa, eta, ondoren, azkenik, inpointer, fitxategia duzu irakurtzen ari. Beraz zenbaki elementu hartzen ari zaren inpointer etatik tamaina, eta ipintzeko datuak sartu. Orain denbora horizontalki tamainaz aldatu da. n berdin bada 2, ondoren pixel bakoitzeko urtean infile, ari gara idazten joan outfile urtean bitan. Nola ez fitxategiak idazten dugu? Beno, fwrite funtzioa dugu, beraz hartu dugu erakuslea struct izateko duten byte duzu Oraindik hori du idazten, eta gero pasatzen dugu tamaina, kopurua, eta irteera, non zoaz ari dela idazten. Eta ondoren prozesu bat errepikatzeko, izango da gai loop etorriko sinple bat. Baina gogoratu behar dugu betegarria gehitzeko sartu Betegarria kontzeptua da, bai, pixel bakoitzean hiru ziztadak da, baina scanline ezinbestekoa bakoitzaren tamaina 4 byte multiplo izan. Beraz, pixel-kopurua ez bada bat 4 multiploa, batzuk gehitu behar dugu padding, horrek zero besterik ez da. Orain, nork egin zuen bezala, eta ez bezala kopia, ondoren infile irudia eta outfile fitxategia dute ezberdinak dituzte betegarria ezberdinak ari dira delako zabalera ezberdinak. Ados. Beraz, agian formula bat litzateke erabilgarri etorriko hemen. Utziko dizut aurkitu, baina , hori betegarria idazteko esango dizu, ondo, besterik fputc funtzio sinple bat da, pertsonaiaren igaroz idatzi nahi duzun, eta ondoren fitxategiaren erakuslea duzula eta idatzi nahi. Beraz, orain dela horizontalki tamaina aldatuko dugu, eta gero betegarria erabiltzen, gogoratzen zure fitxategia mugitu behar duzula posizio-adierazlea, duzulako ezin betegarria sartu fread. Beraz, ziurtatu egin nahi duzun zure fitxategia posizio infile adierazlea Puntu zuzena da. Ere ez duelako nahi dugu resize bertikalean. Ezin dugu besterik luzatzeko horizontalki, ilara beharrak behin delako n aldiz kopiatu beharreko. Orain, badira hainbat Hau egiteko modu. Beraz, inork, berridazketa metodo bat erabili ahal izango dugu, hemen pixel guztia gogoan dugula array bat ilara jakin batean, eta ondoren, array hori idatzi genuen bezala behar duzun aldi guztietan. Edo han recopy metodoa non da, ilara batean irakurtzen infile ondoren eta, ondoren, hori idazten outfile sartu, betegarria gehituz, kokapenean fseek dugu jatorrizko errenkadaren hasierara itzuli, eta gero errepikatu horizontala hortik tamainaz aldatu. Sistemari begiratu gabe, ordea, duzu Nahi pixel bakoitzean errepikatu behar den n aldiz, eta ilara bakoitzean izan n aldiz errepikatzen baita. Horrekin, bitmap izan dituzu bizitza baino handiagoa. Nire izena Zamyla da, eta hau da CS50.