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