>> [MUSIC nagpe-play]
>> Rob BOWDEN: Hi.
Ako Rob at sabihin laki up ang problemang ito.
Kaya kami ay pagpunta sa magsimula sa copy.c bilang isang template, ngunit kami ay pagpunta sa maging
paggawa ng masyadong ng ilang pagbabago.
>> Ngayon makita namin kaagad kami sa paggawa ng isang baguhin kung saan hindi na namin Sinusuri
para sa aming mga rxc ay hindi katumbas 3, ngunit ngayon kami Sinusuri Remote-controlled na ay hindi kasing-halaga 4.
Dahil nais din naming magsama, sa Bukod pa sa mga file sa at sa labas ng mga file
mga argument, f na kung saan ay pagpunta sa maging ito salik sa pamamagitan ng kung saan kami ay pagsusukat.
>> Kaya sa sandaling sigurado kami ng iyon, nais naming gamitin ang mga pag-scan f i-convert ang string
argv1 sa isang float.
At kami ay pagpunta upang mag-imbak na sa factor.
Ang karagdagang character ay tinitiyak na tayo ay talagang hindi pagpasok
isang bagay tulad ng 1.4 ABC sa command line.
>> Ngayon kami ay pagpunta upang lumikha ng ilang mga alias dahil RV2 at RV3 ay hindi
napaka-kapaki-pakinabang na mga pangalan.
Kami ay, sa halip, ng pagpunta sa tumawag sa ang mga ito sa file at out file.
Ngayon kami ay pagpunta upang matiyak na ang aming mga salik ay talagang wasto.
Kaya kung factor ay mas mababa sa o katumbas ng zero o mas mataas sa 100, pagkatapos ng bawat
ang spec, dapat naming tanggihan na factor.
>> Kapag sigurado kami na ito ay mabuti, ngayon ng aming makakaya buksan ang n file, at mayroon kaming upang gawing
siguraduhin na ito ay matagumpay na binuksan.
Kung ito ay hindi, na ay magbabalik null.
Kami ay pagpunta upang buksan ang file out.
At muli, nais naming suriin upang sigurado matagumpay ito ay binuksan.
At kung ito ay hindi matagumpay na buksan, at pagkatapos ay kailangan din namin upang tiyaking isara
ang n file na orihinal na matagumpay binuksan, o iba mayroon kaming
memory tumagas.
>> Kaya ngayon ka pagpunta namin na basahin sa bitmap header ng file at impormasyon bitmap
header mula sa n file.
Kami ay pagpunta sa tiyakin na ang n na file ay isang wastong bitmap.
OK.
>> Kaya ngayon kami ay pagpunta sa simulan paggawa ng ilang mga pagbabago.
Kaya dahil kami ay pagpunta sa ma-pagbabago bagay, muna namin nais na matandaan ang
lumang lapad ng n file.
Gusto naming tandaan ang lumang padding ng ang n file gamit ang parehong kalkulasyon
mula copy.c.
>> At ngayon kami ay pagpunta upang baguhin ang bitmap header impormasyon.
At kaya kami multiply pareho ang lapad at ang taas sa pamamagitan ng factor dahil
na kung ano ang namin ang pagsusukat sa pamamagitan ng.
Kami ay pagpunta upang matukoy ang bagong padding ng mga file sa pamamagitan ng
gamit ang bagong lapad.
At kami ay pagpunta upang matukoy ang bagong laki ng imahe gamit ang bilang ng mga
bytes sa isang solong hilera na kung saan ay pagpunta sa maging ang bilang ng mga pixels ang hilera na
beses ang laki ng isang pixel plus ang bilang ng mga byte ng padding sa dulo
ng hilera na, at multiply ang lahat na sa pamamagitan ng bilang ng mga hilera na mayroon kami.
Kaya iyon ang bilang ng mga byte mayroon kaming sa aming mga data ng imahe.
>> Bf.Bfsize ngayon ay magiging ang numero ng bytes sa aming beta imahe plus
ang laki ng aming mga header.
Kaya plus laki ng header bitmap file at laki ng bitmap header impormasyon.
OK.
Kaya na ito para sa aming mga header.
Maaari naming isulat ang file ulo at header impormasyon sa aming out
maghain, at kami ay mabuti.
>> Ngayon ay oras na upang simulan ang aktwal na pagsusulat ng mga pixel
data upang ang out file.
Kami ay pagpunta sa ipinapahayag ng buffer ng laki lumang lapad RGB triples, at kami ay
pagpunta sa ipinapahayag sa isang variable na tinatawag na hilera manhid, na kami ay pagpunta sa
sa simula-set katumbas ng negatibong 1.
Susubukan naming makita na kami ay pagpunta sa gumagamit na upang masubaybayan kung ano
hilera kasalukuyan naming na-load sa ito buffer.
OK.
>> Kaya ngayon hindi katulad ng standard edition, sa halip ng iterating sa ibabaw sa in
file, kami ay pagpunta upang umulit sa ibabaw ng bawat hilera sa labas file at tayahin
na hilera sa file sa nais naming ilagay sa hilerang ito sa labas file.
Kaya iterating sa lahat ng mga hilera sa labas mag-file gamit ang bagong taas, hindi namin unang
pagpunta upang matukoy ang mga hilera sa lumang maghain kami ay pagpunta upang gamitin, na kung saan kami ay
pagpunta sa gawin sa pamamagitan ng pagsasagawa kasalukuyang ito hilera na hinati sa mga salik.
Kaya na pupuntahan bigyan kami ng mga hilera sa lumang file na gusto namin.
>> Kaya ngayon kung hilera manhid ang hindi pantay lumang y, kami ay pagpunta sa may upang basahin ang mga hilera
na nais namin sa aming kuprum hilera buffer.
Kaya paano kami makapupunta sa gawin iyon?
Una, kami ay pagpunta upang malaman kung ang posisyon na nagsisimula hilera na sa
orihinal na file.
Kaya posisyon na ay magiging nakalipas na ang lahat ng aming mga header at
ngayon nakalipas lumang y mga hilera.
>> At kaya kung gaano karaming mga byte ay nasa isang solong hilera?
Muli, laki ng RGB triple beses lumang lapad plus lumang padding, kaya iyon ang
bilang ng mga bytes sa isang solong hilera.
At gusto namin upang laktawan ang nakalipas lumang y mga hilera.
Kaya kami ay pagpunta sa f humanap at kami ay gamit humingi ng hanay upang simulan mula sa
simula ng isang file.
Kami ay pagpunta sa f humingi sa posisyon na ito sa file, paglalagay sa amin sa
simula ng hilera gusto namin upang basahin sa aming buffer.
>> Kami ay pagpunta sa set hilera manhid katumbas ng lumang y.
Kaya ngayon kung namin loop sa likod at gusto naming gamitin ang parehong hilera sa aming out file,
pagkatapos ay hindi namin pagpunta sa basahin itong muli sa hindi kinakailangan.
Kaya talaga, hilera manhid ay lamang isang pag-optimize.
>> Sa wakas, kami ay pagpunta sa basahin sa kasalukuyang hilera sa lumang lapad RGB triples
na gusto naming mula sa orihinal na file.
Kaya ngayon kuprum hilera naglalaman ng pixel mula sa ang orihinal na file na gusto naming
sumulat sa out file.
Kaya ngayon, gusto lamang sa itaas, sa halip ng iterating sa ibabaw ng lumang file, kailangan namin
ito upang umulit sa ibabaw ng mga bagong file hilera.
Well dito, sa halip na iterating sa ibabaw ng lahat ng lumang pixel na sa kuprum hilera,
gusto naming umulit sa ibabaw ng lahat ng pixels ang aming bagong file sa ito
partikular na hilera.
>> Bakit gusto naming gawin iyon?
Dahil nakikita natin dito na hindi kami talagang kinakailangan ang paggamit ng lahat ng
pixel sa orihinal na file.
Dahil kung kami ay pag-urong, maaari naming talagang gusto upang laktawan ang pixel.
At nakita namin na ito -
x na hinati sa mga salik -
malapit na salamin up dito kung saan kami sabihin y hinati sa mga salik upang malaman na
ang lumang y-ika hilera ay tumutugon sa ang hilera y-ika sa bagong file.
>> Ngayon kami ay pagpunta sa isulat ang lahat ng mga pixel mula sa lumang hilera
sa aming bagong hilera.
Sa sandaling tapos na kami na, kailangan naming lamang ilagay ang padding sa dulo ng aming mga hilera
at kami ay loop bumalik at magpatuloy para sa lahat ng mga hilera sa aming bagong file.
Sa katapusan, kailangan naming isara ang aming lumang maghain, isara ang aming mga bagong file, at pagbalik
zero dahil ang lahat ng bagay nagpunta fine.
>> Ang pangalan ko ay Rob at ito ay pamamahinga.
>> [MUSIC nagpe-play]