[Musika jotzen] ZAMYLA Chan: Miss Scarlett zen kandela-rekin. Whodunit? Beno, jakiteko goaz. Taula joko Pista batean, baliteke emango irudia gorri fisiko bat. Eta irudi hori oso gorria da spotty, eta zure lana da ezkutuko mezua agerian. Eta, normalean, zu gorri bat ematen lupa, edo pantaila gorri bat ezkutuko mezua bat agerian. Beno, hori imitatzen goaz. Whodunit batean, bitmap irudi bat ematen ari zarela oso spotty eta gorria itxura, eta ondoren whodunit programa exekutatu ezkutuko mezu bat ager dadin. Hargatik apurtu honetan urrats sartu. Lehenik eta behin, fitxategia ireki nahi duzun - duzula eman arrastoren. Eta gero ere sortuko Epaia bitmap fitxategiak. Gero bitmap eguneratu nahiko dituzu goiburua epaia outfile info. Hori aurrerago gehiago. Eta gero zu hemen sartu irakurtzen joan ideiarik, scanline, pixel pixel, pixel koloreak aldaketarena beharrezkoa eta idatziz, epaia sartu horiek - pixel pixel sartu Epaia scanline. Nola ez, honi buruz joan hasten gara? Beno, zorionez, copy.c dugu banaketa-kodea. Eta hori frogatzeko joan nahiko guretzat erabilgarria. Copy.c fitxategi bat irekitzen du, izan ere, irakurtzen du infile en goiburua, eta, gero, eguneratu egiten du outfile en goiburua. Eta ondoren pixel bakoitzeko irakurtzen diren scanline, pixel pixel, eta, ondoren, pixel horretan idazten du outfile sartu. Beraz, zure lehenengo urratsa agian izan ondorengo exekutatu terminalean komando - cp copy.c whodunit.c. Horren kopia bat sortuko du copy.c izeneko whodunit.c. Beraz, ireki gure lehen urratsa fitxategia, bai, ez da zehatza duen erreplika copy.c. in Beraz, zuk utzi dut nahi hori begiratu. Zer dugu aurre ari da pset honetan fitxategia / I, funtsean fitxategiak hartuta, , irakurketa, idazketa, horiek editatzen. Nola ez, lehen aldiz irekitzen duzunean fitxategi batean? Beno, ari zaren fitxategia bat aldarrikatu zoazen erakuslea, eta gero deitzen funtzioa fopen. Bidea, edo horren izenean gainditu fitxategia, eta, ondoren, nahi duzun modua fitxategi hori irekitzeko sartu R batean pasatzen zabalduko da irakurtzeko foo.bmp. Berriz w batean pasatzen fopen izango bar.bmp irekia, fitxategia idazteko eta benetan da editatzen. Beraz, orain espedientea ireki dugu, gure hurrengo urratsa da goiburuaren informazio eguneratzeko outfile da. Zer da goiburuaren informazio bat? Beno, lehenik eta behin jakin behar dugu zer bit-mapa bat da. Bitmap sinple bat besterik ez da byte antolamendua. Eta fitxategi horretan ari dira deklaratu Hemen, bmp.h, sorta bat zer bitmap baten informazio benetan egindako. Baina zer axola benetan gara da Bitmap fitxategia goiburua, hementxe, eta the bitmap info goiburua, hemen baino gehiago. Goiburua pare bat osatzen dute aldagai hori oso baliagarria izango da. Ez dago biSizeImage, hau da, bytetan irudiaren tamaina guztira. Eta horretan sartzen pixel eta betegarria. Betegarria oso garrantzitsua da, baina hori ikusiko dugu geroago. BiWidth zabalera adierazten pixel ken betegarria irudia. BiHeight da gero ere altuera pixeletan irudiaren. Eta gero BITMAPFILEHEADER eta BITMAPINFOHEADER, aipatu dut lehenago, horietan irudikatzen dira structs gisa. Beraz, ezin duzu fitxategia goiburua sartzeko berez, baina lortu nahi duzu aldagai horiek barruan. Ados. Beraz, nola eguneratu dugu header info? Beno, lehenik ikusiko dugu ala ez dugu edozein informazio aldatu behar infile, arrastoren, joan outfile, epaia. Kasu honetan da ezer aldatu? Beno, ez da benetan, goaz delako beharreko koloreak besterik aldatzen. Ez ari gara fitxategia aldatuz joan tamaina, irudiaren tamaina, zabalera, edo altuera. Beraz, oraingoz eskuin guztiek besterik pixel bakoitzean kopiatzea. Ados. Beraz, orain dezagun nola dugu benetan at pixel bakoitzean irakur daiteke fitxategi batetik. Beste fitxategi bat S / I funtzioa egingo play sartuko da - fread. Hartzen erakuslea da egiturari joan duten byte edukiko duten irakurtzen ari zaren. Beraz, sartu irakurtzen ari zaren. Eta ondoren gainditu tamaina bat duzu, hau da, elementu guztietan tamaina duzula irakurri nahi. Hemen, funtzio sizeof du egingo erabilgarri etorriko. Ondoren zenbakia pasatzen duzu, eta horrek elementu-kopurua adierazten du tamaina irakurtzen. Eta gero, azkenik, inptr, hau da, fitxategi erakuslea duzu Oraindik dutela ra irakurri da. Beraz, elementu horiek guztiak ez dira barruan inptr eta ari dira datuak joan. Dezagun adibide txiki batean. Datu bi txakurrak sartu irakurri nahi badut, ondo, egin ahal izango dut bi modu bat. Bai ahal dut tamainako bi objektu irakurri nire inptr zakurrarekin, edo irakurri ahal izango dut batean objektu bi txakur tamaina. Beraz, ikusten duzu horrela arabera tamaina eta kopurua antolatu duzula, zuk dezakeen byte kopuru berean irakurri. Beraz, gaur egun, dezagun aldatu pixelaren kolorea behar dugu. Berriro begiratuz gero bmp.h, gero ikusiko duzu, behealdean RGBTRIPLEs struct bat dira, non dute hiru byte osatzen dituzte. Bata, rgbtBlue, rgbtGreen, eta rgbtRed. Beraz, horietako bakoitzaren zenbatekoa adierazten urdina, berdea zenbatekoa, eta gorria zenbatekoa pixel honen barruan, non Zenbateko bakoitza bat irudikatzen zenbaki hamaseitarra. Beraz ff0000 kolore urdin bat izango da, doa urdina delako, berdea, gorria hemen. Eta orduan f-ren guztiak zuriak izango dira. Dezagun smiley.bmp begirada bat, eta horrek Zure banaketa kode duzu. Irekitzeko baduzu besterik irudi batean ikuslea, dituzu ondoren besterik smiley gorri bat ikusten. Baina murgiltze sakonago bat hartuz, hemen dugu ikusten duten egitura of besterik pixel da. Pixel zuria dugu, eta ondoren pixel gorri. Zuria, ffffff, eta, ondoren, guztiak pixel gorri dut koloretako zuretzat hemen, eta 0000ff Oraindik dutela ikusten duzu. Zero urdina, zero berde eta gorriz beteta. Eta smiley da zortzi pixel zabal geroztik, ez dugu inolako betegarria izan. Ondo da. Balio ezberdinak esleitu ziren I hala bada RGBTRIPLE bat eta nahi dut bertan berdea egiteko, eta gero zer egingo dudan da RGBTRIPLE bat izendatu deklaratzeko nuke hirukoitza, eta, ondoren, behin sartzeko byte egiturari dut barruan dot operadorea erabiliko luke. Beraz triple.rgbtBlue, I can esleitu dela 0. Berdea da I esleitu ahal osoa - edozein zenbakia, benetan, 0 eta ff artean. Eta ondoren gorria, Dut, halaber, 0 esan nahi du. Orduan hori pixel berde bat ematen dit. Hurrengoa, zer bada begiratu nahi dut zerbait balioa? Dela egiaztatzen zerbait izan nezakeen ala hirukoitza en rgbtBlue balioa da ff eta ondoren, inprimatu, "naiz sentitzen urdin! ", gertakari baten ondorioz. Orain, horrek ez du nahitaez esan nahi pixel urdina dela, ezta? Pixel en valores berdea eta gorria delako izan ere izan ez 0 balioak. Honen horrek esan nahi du, eta hori guztia hau da egiaztapena urdin osoa. Baina pixel guztiak izan ere partziala izan kolore balioak, hau bezalako hurrengo adibide hemen. Pixka bat gogorragoa ikusi irudi hau zer da gaur egun. Honek itxura bezala pixka bat gehiago clue.bmp duzula eman behar dugu. Orain, fisikoki, hau konpondu dezakezu, han gorria, egilea asko delako pantaila gorri bat eusten irudiari so Gainerako koloreak ager daitezke. Beraz, nola ez hau imitatzen dugu c batekin? Beno, gorri guztiak kenduko genuke irudia osorik. Eta, beraz, behin ezarri genuke egin pixel en 0 balioa gorria. Eta, beraz, irudia apur bat begiratu litzateke hau, non gorria ez dugu atsegin apur inolako. Mezuaren ezkutuko bat ikusi ahal izango dugu Pixka argiago orain. Beste smiley face da. Edo agian beste metodo bat erabili izan dugu. Agian, identifikatu ahal izan genuen the pixel gorri guztiak - hau da, pixel guztiekin 0 urdina, berdea, 0 eta 0 gorri - eta aldatu zuri horiek. Eta gure irudiari begiratu dezake honen antzeko zerbait. Pixka bat errazagoa da ikusten. Badira desestaltzen beste modu asko sekretua mezua baita, kolorea manipulatzeko aurre. Agian metodo bat erabil dezakezu aipatutako dut. Eta, gainera, baliteke nahi duzun kolore batzuk hobetzeko eta ekarri dutenak daudelarik. Beraz, orain, pixel aldatu dugu kolorea, hurrengoa besterik ez dugu behar horiek idazteko scanline arte egiten duen ibilbidean, pixel pixel. Eta, hala ere, berriro ere, atzera begiratu nahi duzu , copy.c izateko ez duzu kopiatzen bada dagoeneko, eta fwrite begiratu funtzioa, eta horrek datuak hartzen, erakuslea byte daukan egiturari joan batetik, tamaina duzula irakurtzen ari elementuak, elementu kopurua, eta ondoren outptr du - fitxategi horiek helmuga. Pixel idatzi ondoren duzun, duzu ere bete batean idazten dute. Zer da betegarria? Beno, rgbt pixel bakoitzean da hiru byte luzea. Baina, bitmap irudi bat scanline du lau byte multiplo bat izan behar du. Eta pixel-kopurua ez bada bat lau multiplo, ondoren, gehitu behar dugu betegarria hau. Betegarria da besterik 0 s irudikatzen. Beraz, nola ez, idatzi edo irakurri dugu hau? Beno, bihurtzen da ezin dela benetan fread betegarria, baina ahal duzun kalkulatu da. Kasu honetan, ideiarik eta epaia zabalera bera dute, beraz, betegarria bera da. Eta betegarria, ikusiko duzun bezala copy.c batean, kalkulatzen da beheko formula batekin - bi.biWidth aldiz sizeof (RGBTRIPLE) izango zenbat byte bmp ematen diguten ilara guztietan dauka. Hortik aurrera, MODULOS eta kenketa rekin 4 kalkulatu ahal nola byte asko gehitu behar da, beraz on byte multiplo du ilara bakoitzean lau da. Orain formula dugula zenbat betegarria behar dugu, gaur egun, idatzi ahal izango dugu. Orain, lehen aipatu dut, betegarria 0 s besterik ez da. Beraz, kasu horretan, zu besterik jarriz dugu char bat, kasu honetan, 0 bat, sartu gure outptr - gure outfile. Beraz, ezin dela besterik izan fputc 0, koma outptr. Beraz, dugu irakurtzen dut berriz sartu gure fitxategia, fitxategi / I mantendu du pista gure zerbait fitxategi horiek posizioa fitxategia posizio adierazle deritzo. Pentsa kurtsore baten ondorioz. Funtsean, denbora guztietan aurreratzen da fread dugula, baina ditugun Gainean kontrolatu, gehiegi. Fitxategia posizio adierazlearen mugitzeko, funtzioa fseek erabil dezakezu. Non inptr fitxategia adierazten horretan bilatzen ari zaren erakuslea da, Zenbateko byte kopurua da duzula kurtsorea eramateko, eta, ondoren, nahi erreferente erlazionatzen kurtsorea non dagoen from. SEEK_CUR pasatzen duzu bada, hori egungo adierazten fitxategiko posizio. Edo beste parametro batzuk erabili ahal izango dituzu. Beraz, agian fseek erabiltzeko joateko nahi dugu fitxategi horren betegarria gainean. Eta berriro ere, itsatsita badago, ez da copy.c. in horren adierazgarri Orain, beraz fitxategia ireki dugu, ideiarik, eta epaia. Goiburua informazio eguneratu dugu Gure epaia, zeren behin bitmap goiburu bat behar du. Dugu orduan arrastoren en sartu irakurri scanline, pixel pixel, aldatuz kolore guztietan bezala, beharrezkoa da, eta sartu horiek idatziz epaia, pixel pixel. Behin epaia irekitzean, ikusi ahal izango duzu nork erruduna, edo zer sekretua mezua da. Nire izena Zamyla da, eta hau whodunit zen.