>> [Seinm ceoil]
>> ZAMYLA Chan: buille Let rudaí suas le Athraigh.
I Athraigh, beidh an t-úsáideoir pas a fháil i, trí na n-orduithe, íomhá bitmap a
ba mhaith leat iad a scála ag roinnt go bhfuil siad pas a fháil freisin i,
i na n-orduithe.
Conas is féidir linn é seo a?
>> Bhuel, rudaí chéad chéad, a ligean ar briseadh seo síos i céimeanna.
Tá tú ag dul a iarraidh a oscailt an infile go dtugann siad duit, chomh maith le
a chruthú agus a oscailt an comhbhrí a tú ag dul a chur ar an
íomhá resized isteach
Ansin, mar atá tú méid a athrú, agus mar tá sé ina bitmap, sé header, mar sin
tú ag dul a thabhairt cothrom le dáta freisin an header faisnéis don comhbhrí,
agus scríobh go isteach
Ansin, tá tú ag dul a léamh i an scanline an infile,
picteilín-ar-picteilín, méid a athrú go cothrománach agus scríobh iad siúd pixel isteach
ar comhbhrí, mar atá sonraithe ag scála an úsáideora.
>> Tá tú ag dul a mheabhrú a cuir stuála réir mar is gá.
Níos mó ar sin ina dhiaidh.
Agus ansin, Athraigh freisin go hingearach.
OK.
Mar sin, tá sé seo ag dul a bheith beagán níos mó casta ná Cé Arna dhéanamh sé, ach
cad cosúil é a bheidh an ní féidir dí, arís, a chruthú an-úsáideach.
Cuimhnigh go osclaíonn ní féidir dí comhad, cothrom le dáta an t-eolas header don
ar comhbhrí, léann ansin isteach an scanline, picteilín-ar-picteilín, scríobh gach picteilín
isteach an comhad a aschur ar scanline.
>> Mar sin, arís, d'fhéadfadh do chéad chéim dócha a chur chun cp, ní féidir dí, resize.c
isteach i do eolaire PSET5.
Cuimhnigh cé, sula chóipeáil tú é, a dhéanamh cinnte go dtuigeann tú
ní féidir dí-maith.
OK.
>> Mar sin, a ligean ar a oscailt comhad.
Tá a fhios agat conas a dhéanamh.
Tá mé ag dul a fhágáil go duit.
Next, an t-eolas header cothrom le dáta don comhbhrí.
Toisc go bhfuil muid ag bitmap nua, ní mór dúinn eolas header nua.
Cad atá ag athrú anseo?
Bhuel, tá an méid comhaid ag dul a athrú toisc go bhfuil muid ag dul a bheith níos mó
pixel ná riamh.
Is é an méid íomhá, dá bhrí sin, freisin, ag dul a athrú, mar go bhfuil an
leithead agus airde.
>> Mar sin, a bhfuil na hathróga, go díreach?
Bhuel, má fhéachann tú isteach an header faisnéise, a fheiceann tú go bhfuil
biSizeImage, a léiríonn an t-iomlán méid an íomhá i bytes,
lena n-áirítear picteilín agus stuála.
Is biWidth an leithead an íomhá i picteilíni, lúide an stuáil.
Is biHeight an airde an íomhá i pixel.
Agus mar sin iad siúd le fáil i structs BITMAPFILEHEADER agus
BITMAPINFOHEADER.
Is féidir leat insint a bhfuil ceann amháin ag dul chun bmp.h agus ag féachaint ar an
Struct BITMAPINFOHEADER agus go bhfaca atá liostaithe athróg ann.
>> Mar sin, a thabhairt cothrom le dáta an header outfiles eolas, tá tú ag dul a iarraidh a
athrú na luachanna ar an airde agus leithead.
Ach tá seans, d'fhéadfadh gá duit roinnt faisnéis header an infile ar
ina dhiaidh sin, mar sin is fearr súil a choinneáil ar an dá.
Ach a bheith an-soiléir le do athraitheach ainmneacha ionas go mbeidh tú a dhéanamh nach thaisme
scríobh na luachanna mícheart i an header an comhbhrí.
>> Mar sin, anois a ligean ar a fháil ar léamh i an scanline picteilín-ar-picteilín.
Arís, táimid ag dul chun dul go dtí ár trusty comhad leabharlann I / A, agus breathnú ar
an fheidhm fread.
Bíonn fread i pointeoir le struct Beidh go bhfuil an beart a
atá á léamh agat i, an méid de gach eilimint go bhfuil tú ag léamh -
arís, tá o, ag dul a bheith úsáideach feidhmiú anseo, uimhir an
gnéithe den méid, méid, go bhfuil tú léamh i, agus ansin ar deireadh, an
inpointer, an comhad a atá á léamh agat as.
Mar sin, tá tú ag cur gnéithe líon méid ó inpointer, agus
iad a chur isteach sonraí.
>> Anois, tá sé in am a athrú go cothrománach.
más ionann n 2, ansin do gach picteilín i an infile, táimid ag dul a scríobh sé
faoi ​​dhó sa comhbhrí.
Conas is féidir linn a comhaid a scríobh?
Bhuel, ní mór dúinn an fheidhm fwrite, mar sin againn atá déanta ar an pointeoir leis an struct
go bhfuil an beart a bhfuil tú scríbhinn ó, agus ansin pas againn i
méid, líon, agus an t-aschur, i gcás ina tú ag dul a bheith ag scríobh go.
Agus ansin a athdhéanamh próiseas a bheidh, a bheith in ann atriallach simplí do lúb.
>> Ach ní mór dúinn a mheabhrú stuáil a chur isteach
Is é an coincheap de stuáil sin, go maith, Tá gach picteilín trí bites, ach
méid de gach ní mór scanline a bheith iolraí de 4 bytes.
Mar sin, más rud é nach bhfuil an líon na n-pixel ar iolraí de 4, ní mór dúinn a chur ar roinnt
stuáil, a bhfuil ach nialais.
Anois, murab ionann agus Cé Arna dhéanamh sé, agus murab ionann agus cóip, ansin íomhá infile agus an
ASCHOMHAD comhad ina scríobhfar tá bheith difriúil stuáil éagsúla toisc go bhfuil siad
leithid éagsúla.
>> OK.
Mar sin, b'fhéidir go mbeadh foirmle teacht i handy anseo.
Feicfidh mé é a fhágáil chun tú a aimsiú sé amach, ach insint duit go bhfuil, stuáil a scríobh,
maith, tá sé ach feidhm fputc simplí, dul san carachtar
gur mhaith leat a scríobh, agus ansin an pointeoir comhaid go bhfuil tú
ag iarraidh a scríobh chuig.
Mar sin anois go atá againn resized go cothrománach, agus ansin a úsáidtear stuáil,
cuimhnigh gur gá duit a bhogadh do chomhad táscaire seasamh, toisc go bhfuil tú
Ní féidir fread isteach stuáil.
Mar sin, ba mhaith leat a dhéanamh cinnte go bhfuil do chomhad táscaire seasamh sa infile
Is ag an bpointe ceart.
Mar ba mhaith linn freisin chun Athraigh go hingearach.
Ní féidir linn a stráice ach é go cothrománach, mar gheall ar gach do riachtanais a chéile
a chóipeáil amanna n.
>> Anois, tá roinnt éagsúla bealaí seo a dhéanamh.
Mar sin, ceann amháin, is féidir linn a úsáid modh Athscríobh, i gur cuimhin linn gach ceann de na pixel
ar a chéile tugtha in eagar, agus ansin scríobh againn go eagar mar
mhéad uair mar is gá.
Nó níl an modh recopy áit, tar éis a léamh i sraith amháin sa infile
agus ansin scríobh go isteach an comhbhrí, a chur leis an stuáil, fseek againn
ar ais go dtí tús an tsraith bunaidh, agus ansin arís ar an gcothromán
méid a athrú ó ann.
Beag beann ar an modh, áfach, beidh tú Ba mhaith gach picteilín a athdhéanamh
n-uaire, agus gach as a chéile a bheith arís agus arís eile amanna n chomh maith.
>> Leis sin, beidh tú ag bitmap níos mó ná saol.
Is é mo ainm Zamyla, agus tá sé seo CS50.