[Powered by Google Translate] [Bisita gidatua - Arazoa Set 4] [Zamyla Chan - Harvard Unibertsitatea] [Hau CS50 da. - CS50.TV] Guztiak eskubidea. Kaixo, guztioi, eta gidatua 4 ongietorria. Gaur gure pset Kernet da. Kernet datza fitxategiak bitmap aurre pset benetan dibertigarria da hilketa baten ezagutzeko. Ondoren, bitmap zenbait fitxategi tamaina aldatzeko goaz, ondoren ari gara, halaber, zati bat benetan dibertigarria izeneko Berreskuratu aurre egingo gaude, batez ere, memoria entregatu txartel bat norbait ustekabean ezabatu beren fitxategiak gaude eta fitxategiak horiek berreskuratzeko eskatu. Baina lehen, pset sartu iritsi aurretik, besterik ez dut nahi denek zoriondu. Ikastaro honen erdigunea gara. Quiz 0 atzean, eta pset4 dugu, eta, beraz, funtsean, erdibidean gaude. Etorri dugu bide luzea itxura itzuliz gero zure psets, pset0 eta pset1 beraz, zoriondu zeure burua buruz, eta batzuk benetan fun stuff sartu dugu. Laukitik Beraz pset hau, berriro ere, sudo Yum-y update exekutatu beharrean, ahal izateko aski da update50 gara bertsio 17,3 eta, batez ere, aparatuaren baduzu. Beraz, ziurtatu update50 exekutatu asko errazten du, gutxiago karaktere batzuk - Ziur tresnaren azken bertsioa zaudela. Bereziki update50 garrantzitsua da CS50 Check erabiltzen hasten gara. Beraz, ziurtatu ez duzula. Pset honen atal guztiak, fitxategi sarrera eta irteera izango aurre goaz, fitxategian I / O. Array aurre egiteko programa asko bat baino gehiago egingo dugu fitxategiak eta horrelako gauzak seinalatuz, beraz, ziurtatu Oraindik ezagutzen dugun benetan eta erosoa egin nahi dugu sarrera eta irteera fitxategiak sartu aurre. Banaketa pset honetan kodea copy.c izeneko fitxategi bat da, eta hori da zer aurkituko dugu benetan erabilgarria izango da ari gara amaitzeko delako benetan copy.c fitxategia kopiatzean eta besterik ez da aldatu apur bat arazoa multzoa 2 lehen zatiak lortzeko gai izan. Eta, beraz, ondoren, aurretik aipatutako I bezala, bit-mapak, baita JPEGs ari gara aurre. Fitxategi horiek nola antolatzen dira, beraz, oso egitura ulertzeko, nola benetan 0 s eta 1s structs sartu ahal izango dugu itzultzeko eta gauzak ahal izango dugu benetan ulertu eta interpretatu eta editatzeko, benetan garrantzitsua izango da, beraz, JPEG eta fitxategiak bitmap sartu eta horien egitura ulertzeko. Pset4, ohikoa den bezala, atal bat galdera batekin hasten da. Dutenek egingo I / O fitxategi aurre egiteko eta, ohituta duzula. Ondoren, part 1 Whodunit da, zauden eman bitmap fitxategi bat itxura mota puntu gorria bezala osoan zehar. Eta gero, batez ere, zer egin behar dugu, fitxategi hau hartu eta besterik ez da apur bat editatu bertsio bat sartu ahal izango dugu irakurri. Funtsean, behin, amaitzeko fitxategi bera izan dugu, puntu gorri horiek guztiak ezkutatu ezkutuko mezua ikusteko gai izan ezik izango da. Ondoren Resize programa bat, fitxategi bat eman da eta, ondoren, eman izena fitxategia irteera dela eta, ondoren, zenbaki bat eman baita, benetan tamainaz aldatu bitmap hori egingo duten osoko balioa. Gero, azkenik, berreskuratu pset dugu. Dugu memoria txartel bat ematen zaie, eta ondoren argazki guztiak berreskuratu ustekabean ezabatu egin dira, , baina ikasi dugu bezala, ez ezabatu eta fitxategia kendu da; dugu mota horretako galdu ziren fitxategia, baina berreskuratzen ari gara. Great. Beraz, I / O fitxategi zehazki, honako hauek dira joan behar duzula erabiltzen dugu funtzio zerrenda osoa. Dagoeneko ikusi duzu pixka bat fopen-oinarriak, fread, eta fwrite baina gehiago nahi izanez gero begiratu fitxategi batean goaz, I / O, hala nola fputc funtzioak horretan, karaktere bat idatzi besterik ez duzu, aldi berean, kokapenean fseek egin, non mota mugitu fitxategia posizioa adierazlea aurreraka eta atzeraka, eta, ondoren, beste batzuk. Baina hori izan dugu pixka bat beranduago pset zehar. Beraz, lehenik eta behin, fitxategi I / O pset sartu genuen joan aurretik, fitxategi bat ireki, esaterako, zer egin behar duzu benetan ezarri fitxategiaren erakuslea. Beraz, FITXATEGIA * erakuslea dugu. Kasu honetan, erakuslea bat deitzen dut nire infile izango delako. Eta, beraz, funtzioa fopen fitxategiaren izena eta, ondoren, erabili ahal izateko noa eta, ondoren, modua egingo dut fitxategia aurre. Beraz, ez da "r" kasu honetan irakurtzeko, idazteko "w", eta, ondoren, "a" gehituaz. Esate baterako, infile batekin ari zara aurre eta egin nahi duzun guztia irakurri eta bertan gordetzen bit eta byte ondoren, seguruenik ari zaren "r" Zure moduan erabili nahi du. Benetan idatzi nahi baduzu, mota honetako fitxategi berri bat egiteko, ondoren, zer egin behar dugu, fitxategi berria ireki dugu eta erabili "w" moduan idazteko. Beraz, orduan, benetan ari zaren fitxategiak sartu irakurketa, egitura ondorengoa da. Lehenik eta behin, egitura bytes ari zaren irakurtzen edukiko du erakuslea. Beraz, ari zaren irakurtzen bytes kokapena izango da. Ondoren ari zara tamaina adierazteko, funtsean, zenbat byte zure programa fitxategi irakurtzeko, tamaina, funtsean, elementu bat izan da, eta, ondoren, zenbat elementu irakurri nahi duzun zehaztu behar duzu. Eta gero, azkenik, irakurtzen ari zaren jakin behar duzu, Beraz, zure erakuslea izango da. I-kolore kodetu horiek fread ere oso antzekoak fsync Ziur erabiltzeko eskubidea duzula ordena egin nahi duzun izan ezik, ziurtatu ari zaren benetan edo idatziz eskuin fitxategia irakurtzean. Orduan aurretik, elementuaren tamaina ditugu, baita elementu kopurua izanez gero, ondoren, play inguruan dezakegu hemen apur bat. Esan DOG eta egitura bat behar dut eta, beraz, ondoren, aldi berean bi txakur irakurri nahi dut. Zer egin izan dut, elementu bat tamaina esan da DOG bat tamaina izango eta horietako bi benetan irakurri dut. Bestela, zer egin izan dut besterik ez dut elementu bat irakurri du esan da eta elementu bat bi txakurren tamaina izango da. Beraz, antzeko play-mota, tamaina eta kopurua inguruan zer duzun intuitiboa arabera. Guztiak eskubidea. Beraz, gaur egun idazteko fitxategiak dugu. Fitxategi bat idatzi nahi duzun, lehen argumentua da benetan non irakurtzen ari zaren. Beraz, funtsean, datuen fitxategia idazten ari zarela, erakuslea amaieran out da. Beraz, pset batera ari zaren aurre, ziurtatu ez duzu get nahastu. Agian definizio aldamenean. Definizioak tira ditzakezu eskuliburua man idatziz eta, ondoren, fwrite, esate baterako, terminalean, edo erreferentzia atzera dezakezu diapositiba honetan eta ziurtatu eskuineko ari zaren bat erabiliz. Beraz, berriro ere, fwrite, fitxategi bat behar duzu nahi duzun idazteko sartu, den azken argumentua izango da eta hori izango da fitxategiaren erakuslea. Beraz, orduan nola aurre agian idatziz, aldi berean hainbat bytes dugu, baina esan karaktere bat bakarra idatzi nahi duzu. Aurrerago ikusiko dugun bezala dugu, adibide honetan, bitmap hori erabili dugu. Orduan erabili fputc ahal izango dugu, batez ere, karaktere bat jarriz aldi berean, CHR fitxategi erakuslea sartu, eta hori gure out erakuslea hor. Orduan bilatzen dugu direnean edo idatzi fitxategi batean, fitxategia jarraipena da non gauden. Beraz, kurtsorea, fitxategi posizioa adierazle moduko bat da. Eta horrela direnean edo idatzi dugu, irakurri berriro fitxategi batean, fitxategi benetan gogoratzen non da, eta, beraz, jarraitzen kurtsorea non dagoen. Hau onuragarria izan daiteke nahi duzun, esan, irakurri, kopuru jakin batean zerbait egin eta, ondoren, honako kopuru hauek irakurri, baina batzuetan nahi atzera edo benetan joan abiatuko da erreferentzia-balio jakin bat izatea. Orduan kokapenean fseek egin funtzioa, zer egiten da, aukera ematen du kurtsorea mugitzeko zenbait fitxategi batean byte kopuru jakin bat. Eta gero, zer egin behar dugu zehaztu non da erreferentzia-balioa. Beraz, bai aurrera edo atzera mugitzen da kurtsorea non da gaur egun, edo zehaztu behar dela mugitu fitxategia hasieran dezakegu edo fitxategia amaiera. Eta beraz, balio negatiboak edo positiboak dezakezu gainditzeko zenbatekoa, eta hori mota mugitu kurtsorea bai aurreraka, bai atzeraka. Beste psets iritsi baino lehen, fitxategia edozein galdera I / O? Ongi da. Adibide gehiago sartu gara, sentitzen free me gelditzeko zalantzak argitzeko. Beraz Whodunit, zu entregatu bitmap file diapositiba bat gorri hau antzekoa, eta itxura hau atsegin puntu gorri sorta bat - eta ez duzu benetan dakit zer idatzi. Duzu squint bada, erdian barruan kolore urdin apur bat ikusteko gai izango ahal izango duzu. Funtsean, hori da testua gordetzen. Hilketa bat gertatu zen, eta jakiteko nor zuen behar dugu. Horretarako, irudi hau irakurgarria formatu batean bihurtzeko mota behar dugu. Inoiz aurkitu duzu guys bada, horrek, batzuetan gutxi kit izango litzateke , non gorria film batekin lupa bat izango litzateke. Edonork? Bai. Beraz, honen antzeko zerbait jasotzen baduzu, lupa bat izango litzateke film gorri, jarri nahi duzun irudiaren gainean, eta mezua ezkutuan bertan ikus ahal izango litzateke. Ez dugu film gorria lupa, beraz, horren ordez, mota sortu gure goaz pset honetan. Eta horrela, erabiltzaileak sarrera whodunit, ondoren arrastoren,. Bmp beraz, infile, dot mezu gorria, eta, ondoren, verdict.bmp gure outfile izango esaten ari dira. Beraz, bitmap irudi arrastoren bat antzekoa berri bat sortu da formatu irakurtzeko modukoa izan ezik, non ezkutuko mezua ikusi ahal izango dugu. Ari gara Nolabaiteko bitmap eta editatzeko manipulatzeko aurre joan zenetik, bitmap fitxategiak hauen egitura sartu dive mota dugu. Horiek apur baino gehiago joan gara hitzaldi,, baina dezagun begiratu batzuk gehiago. Bitmap horretarako bytes moldaketa bat besterik ez dira, funtsean, zehaztu dugu zein bytes esan nahi. Beraz, hemen da mota bitmap image mapa batean bezala, zenbait goiburu fitxategiak hasten dela esaten duena, bertan zenbait informazio batekin hasten da. Buruzko byte kopurua 14 tamaina bitmap image adierazten ikusiko duzu, eta jarraitzen du. Baina orduan zer benetan gaude hemen interesatzen byte kopurua 54 inguruan hasten da. RGB triples hauek ditugu. Zer den egingo da eduki pixel, benetako koloreak balio. Goiburua baino Dena informazio batzuk dagokion irudia, irudiaren zabalera, altuera eta tamaina. Noiz joan betegarria dugu geroago, ikusiko dugu zergatik irudiaren tamaina zabalera edo altuera desberdina izan daiteke. Orduan horiek bitmap irudi horiek ez dira byte sekuentziak zer egin izan dugu ados esaten da, gogoratzen dut index 14, duen tamaina da, esate baterako, baizik eta errazago hau egiteko zer egin dugu it enkapsulatu struct batean. Eta beraz, bi Gurekin egindako structs, BITMAPFILEHEADER bat dugu eta BITMAPINFOHEADER bat, eta, beraz, bakoitzean fitxategi hori irakurri dugu, berez ordena egingo da joan, eta, beraz, ordena ere bete hala nola biWidth eta biSize aldagai sartu egingo. Eta gero, azkenik, pixel bakoitzean hiru bytes irudikatzen. Lehena urdina pixel zenbatekoa da, bigarrena berdea zenbatekoa da, eta, azkenik, gorria, non 0 funtsean urdina edo berde ez zenbatekoa edo ez gorria eta, ondoren, ff gehienezko balioa da. Hamaseitarra balioak dira. Orduan dugu FF0000 gero, blue gehienezko zenbatekoa dagokion eta, ondoren, ez da berdea eta gorria ez, eta, beraz, gero gaituen luke pixel bat urdina. Ondoren dugu ff guztien taula osoan, eta gero esan nahi du pixel zuri bat dugula. Eta normalean kontrakoa mota da RGB esaten dugu. Benetan da BGR joan. Beraz, benetan bitmap irudi adibide bat hartuz gero itxura - let me tira bat sortu hemen. Txiki-txiki bat da. Zooma handitzen ari naiz, eta ikusi du pixelated ahal izango dugu. Itxura kolore blokeak bezalakoa da. Zuri blokeak eta gero gorria bloke duzu. Microsoft Paint play bada, esate baterako, horrelako zerbait egin ahal izango duzu funtsean, zenbait lauki pintura ordena jakin bat. Orduan zer itzultzen bit hau da, honela. Hemen lehen pixel zuri dugu, 6 f-en, eta ondoren gorria pixel dugu, 0000ff bidez adierazten da. Adierazten du, eta beraz, bytes dugun sekuentzia bitmap image nola begiratzen du. Beraz, zer egin dut hemen besterik ez da idatzitako byte horiek guztiak eta, ondoren, koloretako gorria beraz, mota ikus dezakezu, pixka bat squint duzun, nola mota horretako smiley face adierazten bada. Bitmap irudiak lan egiten duten I funtsean sareta bat kenduko zituela. Eta horrela, lehenespenez saretaren lerro guztietan 4 byte multiplo bat izan du. Bitmap image begiratzen badiogu, balio guztietan ari zaren betez. Esate baterako, gorri bat izan dezake duzu hemen, berde bat hemen, hemen urdin bat, baina ziur irudi hori bete lau byte multiplo bat egin behar duzu. Beraz, nahi dut nire irudi hiru bloke zabala izan bada, orduan Balio huts bat jarri nahi dut azken batean, lau multiploa izan dadin. Orduan horrek betegarria deitzen ari gara nuke. Besterik ez naiz x bat ez dagoela adierazi du. 7 pixel luzera duen irudi bat da orain esan nahi dugu, esate baterako. 1, 2, 3, 4, 5, 6, 7, eta hori guztia betetzen da kolore. Bitmap irudiak lan egiten duten 8an bat behar dugu. Oraintxe bertan, 1, 2, 3, 4, 5, 6, 7 dugu. Behar bezala irakurri bitmap irudi 8 espazioak behar dugu. Orduan, zer egin behar dugu betegarria apur bat gehitu Ziur zabalerak guztiak uniforme eta zabalerak diren 4 multiploa. Eta, beraz, aldez aurretik adierazitako I, x bat edo line squiggly gisa kokatu betegarriz osatu eta, baina benetako irudiak bitmap betegarria hamaseitarra 0 adierazten da. Beraz, pertsonaia bakar bat, 0 izango litzateke. Komandoa xxd baliteke handy etorriko da. Zer egiten da, benetan erakusten dizu, zer aurretik nuen aurpegieren antzekoak gustatzen inprimatutako actually I kolore bakoitzak zer pixel izango litzateke eta, ondoren, kolore-kodetuta, ondorengo komandoak xxd exekutatzen duzun, ondoren, benetan inprima izango da zer koloreak pixel horiek dira. Zer egin behar duzu hemen adierazten dut,-s 54 bezalako naiz dela dio I 54 byte hasteko delako hori baino lehen, gogoan izan dugu itzuliz gero bitmap mapa goiburu guztiek informazio eta gauzak horrela. Baina, zer axola benetan gara benetako kolorea adierazten duten pixel da. Beraz, Ez hori,-s 54 gehituz, eta, ondoren, kolore-balioak ikusteko gai gara. Eta ez kezkatu banderak korapilatsu eta gauzak horrela. Arazo multzo zehaztapenak, nola xxd erabili pixel erakutsi jarraibideak izango duzu. Beraz, hemen ikusten duzun, kutxa berde bat, gauza txiki hau atsegin mota itxura. Nik kolore-kodetuta 00ff00, funtsean, ez urdin, berde asko, eta gorria ez esaten. Beraz, berdea dagokio. Hemen ikusten duzun bezala, laukizuzen berde bat ikusiko dugu. Laukizuzen berde hau da, 3 baino ez pixel zabalera, eta, beraz, orduan zer egin behar dugu ziurtatu irudia dela 4 zabal bat baino gehiago egin da betegarria gehigarria gehitu. Eta, beraz, Orduan, 0 s horiek nola ikusten duzu hemen. Hau izango da benetan zure Resize pset ondorio izan, funtsean bit txikia hartu eta, ondoren, 4 handitzeko. Eta beraz, zer ikusten dugun irudi hau da, benetan 12 pixeletako zabalera, baina 12 4 multiplo bat da, eta, beraz, ez dugu ez ikusi behar dugu ez delako edozein amaieran 0 s gehitu guztiz hedatu delako. Ez du gehiago gela. Ongi da. Betegarria buruzko edozein galdera? Ongi da. Cool. Aurretik aipatutako I bezala, bitmap byte sekuentzia bat besterik ez dira. Eta beraz, zer dugun pista mantentzeko zehazki byte kopurua beharrik ordez elementu jakin bat dagokio, izan dugu eta egitura bat sortu ordezkatzen dituzten. Beraz, zer dugu RGBTRIPLE eta egitura bat da. Bakoitzean RGB triple baten instantzia bat behar duzu, hau da, mota bat definitzea eta egitura delako, eta gero rgbtBlue aldagaia sartu ahal izango duzu, era berean, Green eta Red aldagaiak, hau da, adierazi zenbat urdina, berdea eta gorria, hurrenez hurren, duzu. Beraz, bada, aldagai multzo urdina dugu, 0 ff set berdea, gehienezko balioa izan dezakezu, eta, ondoren, aldagai 0 ezarri gorria, orduan zer kolore zehatz honetan RGB triple irudikatzeko? >> [Ikasleak] Green. Green. Hain zuzen ere. Erabilgarria izan jakin bakoitzean RGB triple baten instantzia bat behar duzu, benetan sartu ahal izango duzu kolore zenbatekoa - urdina, berdea eta gorria, banan-banan. Orain horren egiturari buruz hitz egin dugu dugun dezagun, BMP fitxategia begirada bat. Hauek zuretzat egin structs dira. Hemen BITMAPFILEHEADER eta egitura bat behar dugu. Interes-tamaina da. Geroago, info goiburua ditu, batzuk gehiago diren gauzak interesgarri dugu, hots, tamaina, zabalera, altuera eta. Geroago ikusiko dugun bezala sartu, irakurri duzun fitxategia, dugu delako ordena berdinak izatea automatikoki irakurtzen du. Beraz biSize bytes eskuineko irudiaren benetako tamaina dagozkion edukiko du. Eta gero, azkenik, dugu buruz hitz gisa, RGBTRIPLE typedef struct dugu. RgbtBlue, Green, eta Red lotutako ditugu. Great. Ongi da. Orain ulertzen dugu bitmap pixka bat, ulertzen dugun fitxategiaren goiburua eta lotutako info goiburu bat da eta, ondoren, horren ondoren, material interesgarria izan dugu koloreak, eta kolore horiek structs RGBTRIPLE irudikatzen eta horiek, aldi berean, hiru urdina, berdea eta gorria lotutako balioak. Beraz, gaur egun, mota pentsatu pixka bat berreskuratu ahal dugu. Sentitzen dugu. Whodunit pentsatu. Gure arrastoren fitxategia dugu, orduan zer egin nahi dugun da irakurtzeko pixel pixel eta, ondoren, nolabait aldatu pixel horiek horrela bistaratu ahal izango dugu formatu irakurtzeko modukoa. Eta beraz, irteera, fitxategi verdict.bmp pixel pixel idatzi dugu. Mota asko egin da. Dela konturatzen gara. Beraz, zer egin dugu, ez dago zer dugu zurekin copy.c. Zer copy.c ez da bitmap emandako fitxategi kopia zehatza egiten du, eta, ondoren, irteera. Beraz, hau dagoeneko fitxategi irekiko da, pixel Irakurketa pixel, eta, ondoren, idazten du irteera fitxategi batean. Ikus dezagun begirada bat. Erabilera egokia bermatzeko, fitxategi-izenak eskuratzen hemen. Zer da hau? Du sarrerako fitxategia ezartzen du gainditu dugu in infile, hemen izango da, komando-lerroko argumentu gure bigarren. Egiaztapen ziurtatu fitxategia ireki ahal izango dugu egin. Egiaztapen ziur outfile berri bat egin ahal izango dugu hemen. Orduan, zer hau da, hemen, funtsean, besterik ez da hasten bitmap file irakurketa hasieratik. Hasieran, ezagutzen dugun bezala, BITMAPFILEHEADER dauka, eta beraz, sekuentzia horiek bit zuzenean BITMAPFILEHEADER en bete. Beraz, zer Hemen dugu BITMAPFILEHEADER BF dela esaten dela gure mota BITMAPFILEHEADER aldagai berria BF barruan jarri erakuslea hasi zer irakurri dugun goaz, gure infile da. Zenbat ez dugu irakurri? Irakurri zenbat byte osoa BITMAPFILEHEADER eduki behar dugu. Era berean, hori da egiten duguna info goiburua. Beraz, gure fitxategi batera ari gara infile en jarraitu eta bit eta byte horiek ari gara irakurtzen, eta horietako plugging ari gara zuzenean aldagai ari gara instantzia horietan. Hemen ari gara ziur bit bit-mapa bat da. Orain outfile bat dugu, ezta? Beraz, noiz sortu dugu nabarmentzen da, funtsean, hutsik da. Beraz, funtsean, hutsetik bitmap berri bat sortu behar dugu. Zer egiten dugu ziur fitxategiaren goiburua dugun kopiatu egin behar dugu eta infile bezala header info ditu. Zer egiten dugu idatzi dugu, eta gogoratu BF aldagaia mota BITMAPFILEHEADER, zer egiten dugun da eduki hori erabili besterik ez dugu beraz, outfile sartu idazten. Hemen, gogoratu hitz betegarria gara, nola garrantzitsua da ziur dugun pixel zenbatekoa 4 multiploa da. Zenbat betegarria duzu kalkulatzeko formula nahiko erabilgarria da eman zure koadernoan zabalera. You guys copy.c betegarria kalkulatzeko formula bat dugu gogoratu nahi dut. Ados? Beraz, guztion gogoan. Great. Orduan, zer copy.c du hurrengo da iterates bigarrenak lerroak garbitu, guztiak. Doa ilara bitartez, lehenik eta, ondoren, hirukoitza behin irakurtzen dela gordetzen eta, ondoren,, idazten du outfile sartu. Orduan hemen bakarra RGB triple ari gara aldi berean irakurtzen eta, ondoren, triple hori bera jarriz outfile sartu. Delikatua da, betegarria ez dela RGB triple bat, eta, beraz, ezin dugu irakurri RGB triples zenbatekoa betegarria hori. Zer egin behar dugu gaur egun besterik ez mugitu gure fitxategia posizioa adierazle, gure kurtsorea mugitzeko, saltatzeko betegarria guztiak baino gehiago da, beraz, hurrengo errenkadan mota. Eta gero, zer hau ez da kopia erakusten dizu nola nahi betegarria gehitu dezakezu. Beraz, kalkulatzen dugu zenbat betegarria behar dugu, beraz, horrek esan nahi du behar ditugu betegarria 0 s zenbakia. Zer da hau ez da begizta betegarria 0 s zenbakia jartzen gure outfile sartu. Eta gero, azkenik, bi fitxategiak itxi duzu. Infile ondo gisa outfile itxi duzu. Beraz, nola copy.c lanak, eta hori nahiko erabilgarria izango da. Horren ordez, besterik gabe, benetan zuzenean kopiatu eta itsasteko edo, besterik gabe, begiratu eta nahi duzuna idazten besterik ez dezakezu nahi terminalean komando hau exekutatzeko, cp copy.c whodunit.c, fitxategi berri bat sortuko da, whodunit.c zehatza eduki bera kopia gisa ez dauka. Orduan, zer egin dezakegu esparru gisa gainean eraiki eta editatzeko erabiltzen da gure whodunit fitxategia. Hauek dira gure dos Whodunit egin, baina zer copy.c du horietako gehienak benetan Gurekin arreta hartzen du. Beraz, hurrengo egin behar dugu behar bezala aldatu pixel benetan fitxategia irakurtzeko. Gogoratu pixel bat eman hirukoitza, eta, beraz, mota RGBTRIPLE aldagai jakin bat, urdina, berdea eta gorria balioak sartu ahal izango duzu. Hori etorri egingo handy horiek sartu ahal izango delako, horrek esan nahi du ezin duzula ere egiaztatu eta horrek esan nahi du ezin duzula ere aldatu. Beraz, itzuli ginen gure lupa gorria adibidez, funtsean, hori zen iragazkia sort Gurekin gisa. Beraz, zer egin nahi dugun da diren sartu datozen triples guztiak iragazi nahi dugu Hau egiteko modu ezberdinak daude. Funtsean, edozein dela ere iragazki mota nahi duzun. Agian gorria pixel guztiak aldatu nahi duzun edo agian beste kolore bat beste kolore pixel aldatu nahi duzun. Hori da. Gogoratu zer kolore pixel dela egiaztatu ahal eta, ondoren, ere ahal izango dituzu aldatu zaren bidez joan. Ongi da. Beraz, Whodunit. Behin Whodunit exekutatzen duzun, ezagutzen delitua culprit izan duzu. Orain Resize joan goaz. Oraindik ere bitmap aurre goaz. Zer egin dugu sarrera bitmap bat izan dugu eta, ondoren, zenbaki bat pasa eta gero bitmap outfile bat lortu dugu non da hori, funtsean, gure infile n eskalatzen. Esan nire fitxategia besterik ez pixel handi bat izan zen. Orduan, nire n 3, eskalatzea izan zen 3 eta, ondoren, pixel kopuru hori n aldiz errepikatu nahi dut, beraz, 3 aldiz, eta, ondoren, ere eskalatu du 3 aldiz ere bai. Beraz, naiz eskalatuz bertikalki eta baita horizontalki ikusiko duzu. Eta gero, hona hemen adibide bat. N = 2 bada, urdin lehen pixel errepikatu bi aldiz ikusiko duzu horizontalki bi aldiz bertikalki baita. Eta gero jarraitzen duela, eta, beraz, zure jatorrizko irudia eskalatzeko bi zuzeneko duzu. Orduan ginen xehetasunez pseudocode hau bada, espedientea ireki nahi dugu. Eta gero, atzera egin dugu hemen ezagutu, outfile, zabalera hori infile kodea zabalera baino desberdinak izango ikusiko dugu. Zer esan nahi du horrek? Horrek esan nahi du, gure goiburua informazio hori aldatu egingo da. Eta beraz, zer egin nahi dugu goiburuaren informazio eguneratu da, irakurri fitxategiak gaude copy.c esparru jarduten jakitea, dagoeneko badugu aldagai bat adierazten duen tamaina da, eta horrelako gauzak. Beraz, behin, zer egin nahi duzu agian bereziki aldagai horiek aldatu behar duzu. Gogoratu, eta egitura bat behar duzu bada, nola horren barruan aldagaiak sartzeko. Dot operadorea erabili duzu, ezta? Orduan hori erabiliz, header info aldatu beharko duzula badakizu. Beraz, hemen diren zure koadernoan aldatzen joan da benetako elementu zerrenda bat besterik ez da. Fitxategiaren tamaina aldatzen, irudi, baita zabalera eta altuera. Orduan joan bitmap mapa begiratzen ote den fitxategiaren goiburua edo informazio hori duen info goiburua eta, ondoren, aldatu behar. Berriz ere, esan cp copy.c resize.c. Horrek esan nahi du resize.c kopia barruan duen guztia dauka kopia pixel bakoitzaren scanline pixel irakurtzeko modu bat eskaintzen digu. Orain ezik, balioak aldatzen Whodunit genuen bezala ordez, zer egin nahi dugun da pixel bat baino gehiago idatzi nahi dugu betiere gure n 1 baino handiagoa da. Orduan, zer egin nahi dugun luzatzeko horizontalki n nahi dugu, eta baita luza bertikalki n. Nola egiten dugu hori? Esan zure n da 2 eta emandako infile duzu. Zure kurtsorea lehen hasi behar da, eta zer egin nahi duzun n da 2 bada, horietako 2 inprimatu nahi duzun. Beraz, inprimatu horietako 2. Gero, kurtsorea mugitu eta hurrengo pixel, gorria da, eta inprimatu dira horiek gorria 2, zer egin aurretik kalera erantsi dute. Gero, kurtsorea hurrengo pixel mugitu eta horietako 2 marrazteko. Atzera begiratzen duzu bada copy.c esparrua, zer honek hemen RGB triple bat, aldagai berri bat deitu hirukoitza instantzia berri bat sortzen da. Eta hemen irakurtzen sartu, irakurketak infile 1 RGBTRIPLE gordetzen da eta barruan hori hirukoitza aldagai. Orduan benetan aldagai bat, bereziki pixel hori adierazten du. Orduan, idatzi zer nahi egin dezake sartu adierazpen loop fwrite encase da hori idazten du zure outfile, behar bezain gisa. Hori da simple nahikoa. Just funtsean errepikatu idazketa prozesua n aldiz zenbaki eskalatzeko horizontalki. Baina orduan gure betegarria hori aldatu egingo gogoratu behar dugu. Aurretik, luzera 3 zerbait esan izan dugu. Ondoren, besterik ez genuke zenbat betegarria gehitu? Just bat edo gehiago 4 multiploa izan dadin. Baina esaten ari gara, bereziki irudi hori eskalatzerakoan n = 2. Orduan zenbat blue pixel litzateke amaieran dugu? 6 izan nahi dugu. 1, 2, 3, 4, 5, 6. Guztiak eskubidea. Ez da, 6 4 multiploa. Zer 4 multiplo hurbilen? Hori 8 izango da. Beraz, benetan ari gara 2 karaktere betegarria Hara joan. Does Edozeinek gogoratzen dugu betegarria kalkulatzeko formula bat bada eta non egongo den? [Inaudible ikaslearen erantzuna] >> Bai, copy.c. Eskuin. Copy.c formula zenbat betegarria duzu kalkulatzeko bitmap image zabalera jakin bat. Orduan hori joan erabilgarria izan betegarria kopuru jakin bat gehitu behar duzu. benetan daki zenbat betegarria gehitu behar duzu. Baina ohar bat, nahiz eta, ziur ari zaren eskuineko tamaina erabiliz egin nahi duzun. Just kontuz ari zaren, funtsean, delako bi bitmapa irudien aurre. Ziur zarela eskubidea erabiliz egin nahi duzu. Noiz betegarria ari zaren kalkulatzeko outfile kodea, outfile-zabalera erabili nahi duzun eta ez aurreko zabalera. Great. Bitmap irudi osoa horizontalki luzatzen mota hori arduratzen. Baina, zer egin nahi dugu, benetan luzatzen bertikalki baita. Hau da, pixka bat trickier amaitu dugu dugulako errenkada bat kopiatzea eta errenkada horretan idazten, gure kurtsorea amaieran izango da. Beraz, berriro irakurriko dugu, eta, ondoren, besterik ez da irakurtzen hurrengo lerroan. Beraz, zer egin nahi dugun da mota aurkitu errenkada horiek berriro kopiatzea nolabait edo, besterik gabe, mota errenkada horretan hartu eta gero berridazketa berriro. Mota dut aipatu bezala, badaude hainbat modu hau egiteko. Zer egin ahal izango duzu ari zaren bitartez, eta bereziki scanline bidez irakurtzen eta behar diren eremuak aldatuz, gero denda mota array bat pixel horiek guztiak. Gero duzun jakin array hori berriro inprimatu beharko duzu, eta, beraz, besterik ez dezakezu array hori erabili horretarako. Kopiatu behera lerro bat egiteko beste modu bat da, ulertzen berriz kopiatu behar duzu, eta, beraz, benetan mugitu kurtsorea eta hori erabiliz metodoa kokapenean fseek egin. Mugitu kurtsorea modu guztiak atzera eta, ondoren, kopia prozesua errepikatu berriro. Beraz, gure eskalatzea kopurua n izanez gero, ondoren, zenbat aldiz litzateke atzera joan behar dugu eta berridatzi line? >> [Ikasleen] n - 1. >> Bai, perfektua. n - 1. Egin dugu behin dagoeneko, eta, beraz, ondoren, joan atzera prozesua errepikatu nahi dugu n - 1 zenbatekoa aldiz. Ongi da. Beraz, zure resize funtzioa duzu. Orain benetan fun, my favorite pset, hau da, berreskuratu ahal izango dugu. Bitmap, baizik eta, une honetan JPEGs ari gara aurre. Egia esan, ez gara emandako horretarako JPEGs fitxategi bat besterik ez, gaude, batez ere, memoria-txartel bat raw formatuan. Eta, beraz, hau bit hasieran info eta zabor balio badu, eta, ondoren, hasten da eta JPEG fitxategi sorta bat du. Hala eta guztiz ere, txartel bat gaude entregatu argazkiak ezabatuko dugu; funtsean, ahaztu dugu non argazkiak txartela barruan kokatzen dira. Orduan gure Berreskuratu egitekoa da txartel-formatu honen bidez joan eta pictures horiek berriro aurkitu. Zorionez, JPEG fitxategiak eta txartelaren fitxategia egitura pixka bat lagungarria da. Izan da behin betiko izan da pixka bat trickier ez balitz formatu zehatz honetan. JPEG fitxategia bakoitza benetan bi sekuentzia posible, goian zerrendatutako batekin hasten da. Funtsean, beti berri bat JPEG fitxategia duzu, bai sekuentzia ffd8 ffe0 edo bestea, ffd8 ffe1 hasten da. Another lagungarria da jakitea gauza JPEGs contiguously gordetzen dira. Beraz, betiere, bat JPEG fitxategia eta ondorioz, beste bat hasten da. Beraz, ez dago balio han-arteko edozein motatako. Behin JPEG bat Irteeran hit duzun dagoeneko JPEG bat irakurtzen, aurreko eta hurrengo hasieran amaieran hit duzula badakizu. Ikusteko lotura mota, eskematiko bat egin nuen. JPEGs buruz beste gauza bat da horiek irakurri ahal izango dugun 512 byte sekuentziak aldi berean, era berean, txartelaren hasieran. Ez dugu behar dira single byte bakoitza egiaztatzen zela zurrupatu delako. Beraz, horren ordez, zer egin ahal izango dugu gaur egun 512 byte irakurri aldi berean eta, ondoren, tiny little horiek xerratan artean ordez egiaztatzea, 512 byte bakarrik egiaztatu ahal izango dugu hasieran. Funtsean, irudi hau, zer ikusten duzun txartela hasieran, benetako JPEGs bere burua benetan garrantzitsuak diren balioak ez duzu. Baina orduan zer daukat bi JPEG bat hasierako sekuentzia bat adierazi izar bat da. Beraz, betiere, izar bat ikusiko duzu, JPEG fitxategi bat duzula badakizu. Eta gero JPEG fitxategi bakoitzak 512 byte multiplo batzuk izango bat baino gehiago, baina ez da gauza bera izan behar. Ezagutzen duzun modu hit duzula JPEG beste hit izar beste, bytes hasierako sekuentzia beste. Ondoren, hemen duzu gorria JPEG file jarraitu behar duzu izar bat sakatzen duzun arte, den kolore berri bat adierazten da. Eta aurrera jarraitu nahi baduzu, orduan izarra beste hit duzu, JPEG beste hit guztiak jarraitzen amaiera arte. Oraindik azken irudia hemen, arrosa bat. Amaieran joan hit fitxategia pertsonaia amaiera arte. Hau da, benetan erabilgarria izango da. A nagusiak takeaways batzuk hemen: Txartela fitxategia ez JPEG batekin hasiko da, baina JPEG behin hasten, JPEGs-guztiak gordetzen dira ondoan beste bat. Berreskuratu for pseudocode batzuk. Lehenik eta behin, gure txartela fitxategia ireki dugu, eta hori gure fitxategia I / O funtzioak erabiliz. Prozesu hau errepikatu dugu lerro amaierara iritsi arte gara. 512 byte irakurri aldi berean ari gara. Eta zer esan dut buffer batean gorde dugu, beraz, funtsean, 512 byte horiek mantendu dakigu zehatz-mehatz zer haiekin egin arte. Orduan, zer egin nahi dugun dugu ala ez dugu hit izar bat edo ez egiaztatu nahi dugu. Dugu hit bada izar bat dugu, hit bada, hasierako sekuentzia bat, JPEG fitxategia berri bat hit ditudan ezagutzen dugu. Zer egin nahi dugu gure direktorioan pset4 fitxategi berri bat sortu nahi dugu fitxategi hori egiten jarraitzeko. Baina, era berean, dugu dagoeneko JPEG bat baino lehen, ondoren, fitxategi hori amaitzeko eta karpeta pset4 bultza nahi dugu, non fitxategi hori gordetzen dugu zehaztu ez badugu amaitu JPEG fitxategia ditudan delako, ondoren, funtsean, izan dugu zehaztugabea zenbatekoa. JPEGs ez da inoiz amaituko da. Beraz, ziur JPEG fitxategi bat irakurtzen ari gara, eta hori idatziz egin nahi dugu, zehazki itxi duten ordena hurrengo bat ireki nahi dugu. Hainbat gauza ikusteko nahi dugu. JPEG berri baten hasiera da ala ez dugu gure buffer Oraindik egiaztatu nahi dugu eta, gainera, dagoeneko egin dugu bada aurkitzen JPEG bat baino lehen zure prozesua apur bat aldatu egingo delako. Orduan guztietan zehar joan ondoren eta fitxategiaren amaiera! orduan zer egin nahi duzu gaur egun diren fitxategiak irekitzeko guztiak itxi nahi duzu. Hori izango da, ziur aski, azken JPEG formatuan duzula izango da, baita txartel-fitxategi gisa duzula aurre. Azken oztopoa behar dugu aurre nola benetan egin JPEG fitxategi bat eta nola benetan bultza karpetan. Pset eskatzen JPEG aurkitzen duzun bakoitzean honako formatu, non zenbakia duzu. jpg. Kopurua, nahiz eta 0 da, 000.jpg deitzen diogu. Bakoitzean JPEG bat aurkituko duzu zure programan, ordena hori aurkitu izendatu nahi duzu. Zer esan nahi du horrek? Behar mota horretako jarraituko dugu pista aurkitu dugu zenbat eta zer JPEG bakoitzeko zenbakia izan behar du. Hemen sprintf funtzioa baliatu nahi dugu. Similar printf, balio bat besterik ez grabatuak mota terminal sartu, sprintf fitxategi bistaratzen karpeta sartu. Eta beraz, zer sprintf, izenburu hau izan nuen bada ez litzateke, eta, ondoren, katea ez dago inprimatu litzateke 2.jpg. Dudan nire fitxategiak itxi behar bezala hartuta, fitxategi nintzen out idatziz edukiko luke. Baina gauza bat da kodea dut hemen ez da nahiko asetzeko zer da pset behar. JPEG file bigarren izendatu behar da, besterik ez 2 ordez 002 pset eskatzen du. Beraz inprimatu izena eta, ondoren, agian biltegian pixka bat aldatu nahi duzun dezake. Does Edozeinek gogoratzen nola esker, espazio estra dugu zerbait inprimatu dugu? Bai. >> [Ikasleak] 3 bat jarri duzu ehuneko ikurra eta 2 artean. >> Bai, perfektua. Kasu honetan 3 bat jarri duzu nahi dugu espazio delako 3. % 3d seguruenik emango dizu 002.jpg ordez 2. Sprintf funtzioa sartu lehen argumentua da, benetan, char array bat, kateak gisa aldez aurretik bazekien dugu. Borondatea dutenek, aldi baterako biltegiratze atsegin gehiago mota, gordetzeko emaitzak katea. Ez duzu benetan honekin, aurre, baina sartu behar duzu. Fitxategi-izena behin egiten den kopurua, hiru karaktere jakiteak, eta gero. jpg, zenbat denbora beharko luke array hau izango ote da? Bota zenbaki bat. Zenbat izenburua pertsonaiak, izena? Beraz, ez da 3 hashtags, epea, jpg. >> [Ikasleak] 7. >> 7. Ez da nahiko. 8 nahi dugu, nahi dugu, baita null amaierako ahalbidetuko duelako. Azkenik, marrazteko Berreskuratu duzun egingo egiteko prozesua, hasieran zenbait informazio duzu. JPEG fitxategi bat aurkituko duzu Irteeran arte jarraituko duzu, eta hori bai bi sekuentzia hasierako bat izan daiteke. Mantentzeko irakurtzen duzu. Barrarik bakoitzak hemen 512 byte adierazten du. Mantentzeko irakurketa, hasierako sekuentzia beste topo arte irakurtzen mantentzeko. Behin, uneko JPEG amaituko duzu, kasu honetan, gorria da, beraz, amaitzeko nahi duzun. Sprintf zure karpeta pset4 duen izena sartu nahi duzu, ondoren JPEG berri bat irekitzeko eta, ondoren, irakurtzen jarraitu nahi duzun aurkituko duzu hurrengo arte. Irakurketa mantentzeko, irakurketa jarraitzeko, eta, ondoren, azkenik, azkenean, fitxategi amaiera iritsiko zaren joan eta, beraz, azken JPEG itxi nahi duzu zinen lan egiten, sprintf zure karpeta pset4 sartu, eta, ondoren, argazkiak duzula ahaztuak begiratu. Irudi horiek benetan CS50 langileen pictures, eta, beraz, hau da, non bonus fun pset du parte datorren ari zaren zure atal argazkiak TFS lehian eta haiekin hartu pictures egin duzula pset frogatzeko eta zein langile kideen argazkiak daude, beraz, ikusi ahal izango dituzu. Orduan argazkiak atera langileak. Batzuetan Chase behera duzu. Seguruenik, horietako batzuk ihes duzu saiatuko da. Argazkiak atera haiekin. Hau da, etengabe. Ez dela denean pset dela. Zehaztutako epea emango dira ezagutzera. Ondoren, elkarrekin zure atala, edozein atal hartzen pictures pretty awesome langileen kide gehienak saria irabazi du. Pizgarriak lortzeko mota zure pset4 amaitu bezain laster ahalik eta ondoren lortu duzulako enpresa CS50 hainbat taldekide guztiek behera ehizatzea. Hori ez da derrigorrezkoa, nahiz eta, beraz, behin argazkiak lortuko duzu, gero pset4 amaitu dira. Eta nago Bisita gidatua 4 amaitu zuen, eta, beraz, eskerrik asko etortzeagatik. Kernet Zorte ona izan. [Txalo] [CS50.TV]