>> [Music kucheza]
>> Rob BOWDEN: Hi, mimi nina Rob, hebu kujaribu hii juu ya kwa ukubwa.
Hivyo, sisi ni tena kwenda kuanza na kimsingi nakala ya copy.c, na
kufanya mabadiliko machache.
Kumbuka mara moja sisi kuona mabadiliko, ambapo badala ya kuangalia kuona kama
argc haina sawa 3, tunataka kuangalia kama argc hana sawa 4, tangu
sasa sisi siyo kuchukua tu katika infile na outfile, lakini sisi ni pia kuchukua katika
n, ambayo ni kiasi kwamba sisi ni kuongeza picha ya awali kwa.
Mara baada ya sisi ni kuhakikisha ya kwamba, tunaweza tu kubadilisha n kwa integer kutumia atoi.
>> Kwa hiyo, sasa tunakwenda kujenga baadhi ya Majina bandia, kama wito argv 2 infile, na
argv 3 outfile, kwa sababu argv 2 na argv 3 sio majina na manufaa sana.
Sasa tunataka kuangalia kuhakikisha n ni ndani ya mipaka tunatarajia, ili
spec bayana kwamba kama ni chini ya au sawa na sifuri, au zaidi ya 100,
basi hiyo ni batili resize sababu, na sisi lazima kuwaonya user ya kwamba.
>> Mara baada ya sisi ni zaidi ya yote, tunaweza hatimaye kufungua infile yetu, na sisi haja
kwa makosa kuangalia kuhakikisha kwamba ufunguzi hakuwa na kushindwa kwa sababu fulani.
Sisi pia haja ya kufungua outfile yetu, na tena makosa kuangalia kuhakikisha kwamba
hakuwa na kushindwa kwa sababu fulani.
Lakini kuwa na uhakika kama ufunguzi wa outfile alishindwa kwamba tunahitaji karibu
infile, ambayo ilikuwa tayari kufunguliwa.
>> Hivyo, kuchukua kwamba hakuwa na kushindwa, basi we're - tu kama katika copy.c--
kwenda kusoma katika header kutoka infile.
Tunakwenda kuhakikisha ni halali bitmap, lakini sasa tunakwenda kufanya baadhi ya
mambo kidogo tofauti.
Hivyo kwanza, tunakwenda kutaka kumbuka upana awali na urefu
ya infile, kwa sababu tunakwenda kubadilika kwa ajili ya outfile.
Hivyo sasa kumbuka kwamba kwa sababu ya ajabu bi.biheight, ni hasi, na
hivyo urefu halisi, katika chanya, sisi unataka kuchukua thamani kabisa.
>> Sasa, padding ni kwenda kuwa sawa hesabu kama ilivyokuwa katika copy.c,
kutumia upana wa zamani, na sasa tuko kweli kwenda na mabadiliko
nini katika header yetu.
Hivyo sisi ni kwenda kuzidisha upana yetu kwa n, tangu sisi ni kuongeza upana na
n, kuzidisha urefu na n, tangu tuko kuongeza na n, na sasa tuna
hesabu kwa padding mpya msingi upana mpya.
>> Basi sasa sisi haja ya kubadili baadhi maeneo mengine katika header yetu.
Bi.biSizeImage zinatakiwa kuwa ukubwa wa ka wote katika saizi
na padding wa picha.
Na hivyo ukubwa wa moja ya mstari wa wetu picha ni ukubwa wa RGB tatu, ukubwa
ya pixel moja, wakati idadi ya saizi katika mstari, pamoja na padding katika
mwisho wa mfululizo.
Na kisha tunakwenda kuzidisha na thamani kamili ya urefu yetu kupata
jumla ya idadi ya ka katika data picha.
bf.bfSize ni jumla ya idadi ya ka katika data yetu ya picha, hivyo
bi.biSizeImage, pamoja na ukubwa wa headers yetu.
Hivyo, kuongeza ukubwa wa faili bitmap header, na ukubwa wa bitmap info
header, OK.
Hivyo kwamba wote sisi haja ya mabadiliko katika headers yetu.
Sasa tutaweza kuandika bitmap file header kwa outfile yetu, na bitmap yetu info
header kwa outfile yetu, na sasa tuko tayari kuanza kwenda
juu ya saizi halisi.
>> Hivyo tunataka iterate juu ya infile ya Scan mistari.
Hivyo tunataka iterate juu ya oldheight.
Hii ni kwa nini sisi zinahitajika kumbuka urefu awali, kabla ya sisi mabadiliko hayo
na kuongezwa ni kwa n.
Sasa sisi ni kwenda kusoma moja mstari wa infile katika
buffer ya ukubwa oldwidth.
Hivyo hapa, sisi ni freading ukubwa wa RGB tatu, moja pixel, na umri wa upana wa
yao kutoka infile katika buffer yetu.
Na kwamba kinaendelea kuwa mzima mstari katika safu hii.
Basi sasa, tunataka iterate mara n kwa magazeti safu hii kwa outfile yetu n mara kwa mara.
Na hivyo kwamba ni nini kitanzi hii ni kufanya.
Hii kitanzi ndani ni iterating juu ya mstari yenyewe, juu ya safu, uchapishaji
kila pixel katika safu n mara kwa mara.
Hivyo hiki 0 ni kuwa kuchapishwa n mara kwa mara, hiki kwanza ni kuwa
kuchapishwa mara n.
Na kwamba aina ya jinsi sisi ni kwenda kwa usawa wadogo katika outfile, na
kitanzi hii, kwani sisi ni wanaoendesha n mara kwa mara, ni jinsi tunakwenda
wima wadogo.
>> Hapa chini, tunaona kwamba tunahitaji kuongeza padding mwishoni mwa kila mstari.
Hiyo ni kwa nini hii ni ndani ya kwa kitanzi hiyo uchapishaji nje safu n ya tu
hii safu moja kutoka infile.
Kisha hapa chini, mimi nina kwenda ruka juu ya padding katika infile, tangu mara moja
sisi ni kosa kwa safu moja ya infile, sisi hawajali
nini padding mara.
Sisi tu wanataka kupata mstari wa pili.
Na kisha tutaweza kitanzi nyuma na kufanya yote hii tena kwa mstari wa pili.
>> Hatimaye, mara moja sisi ni kosa kwa yote, tunaweza kufunga infile, karibu
outfile, na kurudi 0 kwa sababu sisi ni kosa.
>> Jina langu ni Rob, na hii ilikuwa resize.
>> [Music kucheza]