>> [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.