>> [MIZIK jwe]
>> ZAMYLA Chan: souflèt Annou bagay sa yo moute ak rdimansyonman.
Nan rdimansyonman, itilizatè a ap pase nan, atravè liy lan lòd, yon imaj bitmap ki
yo vle ou selon echèl la pa yon kantite pou yo menm tou pase nan,
nan liy lan lòd.
Ki jan nou fè sa?
>> Oke, premye bagay sa yo an premye, kite a kraze sa a desann nan etap.
W ap ale nan vle louvri infile la yo ke yo ba ou, menm jan tou
kreye epi louvri outfile a ki w ap ale nan mete nan
rdimansyone imaj pous
Lè sa a, paske w ap rèsizin, ak paske li nan yon bitmap, li yon header, se konsa
w ap ale nan tou mete header a enfòmasyon pou outfile a,
epi ekri ki pous
Lè sa a, w ap ale nan li nan scanline a nan infile a,
pixel-pa-pixel, rèsizin orizontal ak ekri sa yo piksèl nan la
outfile, jan sa espesifye pa echèl itilizatè a la.
>> W ap ale nan sonje ajoute padding si sa nesesè.
Plis sou sa pita.
Lè sa a,, tou rdimansyonman vètikal.
OK.
Se konsa, sa a ki pral gen yon ti kras pi plis konplike pase Ki moun ki fè l ', men
sa ki nan sanble, se paske copy.c pral, ankò, pwouve trè itil.
Sonje ke copy.c louvri yon dosye, Mizajou nan enfòmasyon yo nan header pou la
outfile, lè sa a li nan scanline a, pixel-pa-pixel, ekri chak pixel
nan scanline dosye a pwodiksyon an.
>> Se konsa, ankò, premye etap ou ka pwobableman dwe CP, copy.c, resize.c
nan anyè PSET5 ou.
Sonje menm si, anvan ou kopi li, a asire w ke ou konprann
copy.c trè byen.
OK.
>> Se konsa, kite a louvri yon dosye.
Ou konnen ki jan yo fè sa.
Mwen pral kite sa gade ou.
Apre sa, mete ajou enfòmasyon an header pou outfile la.
Paske nou gen yon nouvo bitmap, nou gen nouvo enfòmasyon header.
Ki sa ki chanje isit la?
Oke, gwosè a dosye ki pral chanje paske nou ap ale nan gen plis
piksèl pase anvan.
Gwosè a imaj se, konsa, tou pral chanje, kòm se nan
lajè ak wotè la.
>> Se konsa, ki varyab moun sa yo ki, egzakteman?
Byen, si w gade nan header a enfòmasyon, ou wè gen
biSizeImage, ki reprezante manm nan gwosè nan imaj la nan bytes,
ki gen ladan piksèl ak pwotèj.
biWidth se lajè a nan imaj la nan piksèl, mwens padding la.
biHeight se wotè a nan imaj la nan piksèl.
Se konsa, sa yo genyen nan yo nan la strukt BITMAPFILEHEADER ak
BITMAPINFOHEADER.
Ou ka di ki se yon sèl ki pa ale nan bmp.h ak gade nan nan
Konstri BITMAPINFOHEADER ak wè ki varyab yo ki nan lis la.
>> Se konsa, yo mete header nan outfiles enfòmasyon, w ap ale nan vle
chanje valè sa yo nan la wotè ak lajè li an.
Men, chans yo se, ou ta ka bezwen kèk nan enfòmasyon header infile la
pita, se konsa pi bon yo kenbe tras nan tou de.
Men ou dwe trè klè ak varyab ou non pou ke ou pa fè sa aksidantèlman
ekri valè yo kòrèk nan header a pou outfile la.
>> Se konsa, kounye a kite a jwenn li nan scanline pixel nan-pa-pixel.
Yon fwa ankò, nou pral tounen vin jwenn konfyans nou ranpli I O bibliyotèk /, ak gade nan
fonksyon an frèd.
frèd pran nan yon konsèy nan yon konstri ki pral gen bytes yo ki
w ap li nan, gwosè a nan chak eleman ke w ap lekti -
ankò, sizof a pwal itil fonksyone isit la, ki kantite a
eleman nan gwosè, gwosè li, ke w ap lekti nan, ak Lè sa a, finalman, an
inpointer, dosye a ki w ap li nan.
Se konsa, ou ap pran eleman nimewo nan gwosè soti nan inpointer, ak
mete yo nan done.
>> Koulye a, li lè yo rdimansyonman orizontal.
Si n egal 2, Lè sa a, pou chak pixel nan infile a, nou ap ale nan ekri li
de fwa nan outfile la.
Ki jan nou ekri dosye?
Oke, nou gen fonksyon an fwrite, se konsa nou te pran konsèy nan konstri la
ki gen bytes yo ke w ap lekri nan men, ak Lè sa a, nou pase nan
gwosè, nimewo, ak pwodiksyon an, kote w ap ale nan dwe ekri sa a.
Lè sa a, yo repete yon pwosesis, yo pral kapab yon repete senp pou bouk.
>> Men, nou bezwen sonje yo ajoute padding pous
Konsèp la nan padding se ke, byen, chak pixel se twa mòde, men nan
gwosè nan chak scanline dwe gen yon miltip nan 4 bytes.
Se konsa, si kantite a nan piksèl se pa yon plizyè nan 4, nou bezwen ajoute kèk
padding, ki se jis zero.
Koulye a, kontrèman ak Ki moun ki fè l ', ak kontrèman ak kopi, Lè sa a, infile imaj ak nan
outfile dosye yo te diferan gen diferan padding paske yo ap
diferan larjer.
>> OK.
Se konsa, petèt yon fòmil ta vini an sou la men isit la.
Mwen pral kite li ak ou pou jwenn li soti, men di ou ke, yo ekri padding,
byen, li nan jis yon fonksyon fputc senp, pase nan karaktè a
ke ou vle ekri, epi Lè sa a, konsèy la dosye ke ou
vle yo pou yo ekri.
Se konsa, kounye a ke nou te rdimansyone orizontal, ak Lè sa a, itilize padding,
sonje ke ou bezwen pou avanse pou pi dosye ou pozisyon endikatè, paske ou
pa ka frèd nan pwotèj.
Se konsa, ou vle asire w ke dosye ou endikatè pozisyon nan infile la
se nan pwen ki kòrèk la.
Paske nou vle tou rdimansyonman vètikal.
Nou pa ka jis detire li orizontal, paske chak bezwen ranje
yo dwe kopye fwa n.
>> Koulye a, gen plizyè diferan fason yo fè sa.
Se konsa, yon sèl, nou ka sèvi ak yon metòd reyekri, nan ke nou sonje tout piksèl yo
nan yon ranje ki te bay nan yon etalaj, ak Lè sa a, nou ekri ki etalaj kòm
anpil fwa jan sa nesesè.
Oswa gen nan metòd la rekopye kote, apre ou fin li nan yon sèl ranje nan infile la
ak Lè sa a lekri ke nan outfile a, ajoute padding a, nou fik
Retounen nan kòmansman an nan ranje orijinal la, ak Lè sa a, repete orizontal la
rèsizin apati de la.
Kèlkeswa metòd la, menm si, ou pral vle chak pixel ap repete
n fwa, ak tout ranje yo dwe repete fwa n tou.
>> Ak sa, ou pral gen bitmap pi gwo pase lavi.
Non mwen se Zamyla, e sa se CS50.