>> [MUSIC nagpe-play]
>> Rob BOWDEN: Hi, Ako Rob, sabihin subukan ito sa para sa laki.
Kaya, muli kami ay pagpunta sa magsimula sa isa lamang kopya ng copy.c, at
gumawa ng ilang pagbabago.
Tandaan agad makita namin ang isang pagbabago, kung saan sa halip ng pag-check upang makita kung
argc ay hindi katumbas 3, nais naming suriin kung argc ay hindi katumbas ng 4, dahil
ngayon hindi lang kami ang pagkuha sa isang infile at outfile, ngunit nagsusumikap din paglalaan sa
n, kung saan ay ang halagang handa namin pagsusukat ang orihinal na imahe sa pamamagitan ng.
Sa sandaling sigurado kami ng mga iyon, maaari naming lamang convert n sa isang integer gamit atoi.
>> Kaya, ngayon kami ay pagpunta upang lumikha ng ilang mga mga alias, tumawag lamang argv 2 infile, at
argv 3 outfile, dahil argv 2 at argv 3 ay hindi masyadong kapaki-pakinabang na mga pangalan.
Ngayon nais naming suriin upang masiguro n ay sa loob ng hanggahan inaasahan namin, kaya ang
spec tinutukoy na kung ito ay mas mababa sa o katumbas ng zero, o mas malaki kaysa sa 100,
pagkatapos na ang isang di-wastong Baguhin ang laki ng factor, at dapat naming bigyan ng babala ang mga gumagamit ng mga iyon.
>> Sa sandaling kami ay lampas sa lahat ng iyon, kaya namin sa wakas buksan ang aming infile, at kailangan namin
sa error suriin upang tiyakin na ang pambungad na ay hindi mabigo para sa ilang kadahilanan.
Kailangan din namin upang buksan ang aming outfile, at muli error suriin upang tiyakin na
ay hindi mabigo para sa ilang kadahilanan.
Ngunit maging sigurado kung ang pagbubukas ng Nabigo ang outfile na kailangan namin upang isara
ang infile, na kung saan ay na binuksan.
>> Kaya, sa pag-aakala na hindi mabibigo, at pagkatapos ay lubos - tulad lamang ng sa copy.c--
pagpunta sa basahin sa header mula sa infile.
Kami ay pagpunta sa tiyakin na ito ay isang wastong bitmap, ngunit ngayon kami ay pagpunta sa gawin ang ilang mga
medyo naiiba ang mga bagay.
Kaya una sa lahat, kami ay pagpunta sa nais na matandaan ang orihinal na lapad at taas
ng infile, dahil kami ay pagpunta sa ay ang pagbabago nito para sa outfile.
Kaya ngayon tandaan na para sa mga kadahilanang kakaiba bi.biheight, ay negatibo, at
kaya ang aktwal na taas, sa positibo, namin nais na kunin ang absolute value.
>> Ngayon, ang padding ay magiging pareho kalkulasyon ang mga ito sa copy.c,
gamit ang lumang lapad, at ngayon kami ay talagang pagpunta upang baguhin
ano sa aming mga header.
Kaya kami ay pagpunta sa i-multiply ang aming lapad sa pamamagitan ng n, dahil kami ay pagsusukat ang lapad sa pamamagitan ng
n, i-multiply ang taas sa pamamagitan ng n, dahil kami ay pagsusukat sa pamamagitan n, at ngayon kami ay
ang kalkulasyon para sa isang bagong padding base sa bagong mga lapad.
>> Kaya ngayon ay kailangan naming baguhin ang ilang mga iba pang mga patlang sa aming header.
Bi.biSizeImage ay dapat na maging ang laki ng lahat ng mga bytes sa mga pixel
at padding ng imahe.
At kaya ang laki ng isang solong hilera ng aming imahe ay laki ng RGB triple, ang laki
ng isang single pixel, beses ang bilang ng mga pixels sa isang hilera, pati ang padding sa
ang dulo ng hilera.
At pagkatapos ay kami ay pagpunta sa i-multiply na sa pamamagitan ng absolute value ng aming taas upang makakuha ng
ang kabuuang bilang ng mga byte sa data ng imahe.
bf.bfSize lamang ang kabuuang bilang ng bytes sa aming mga data ng imahe, kaya
bi.biSizeImage, pati ang laki ng aming mga header.
Kaya, ang pagdaragdag sa laki ng bitmap file header, at laki ng bitmap info
header, OK.
Kaya na ang lahat ng kailangan namin upang baguhin sa aming mga header.
Ngayon gagamitin namin isulat ang header bitmap file sa aming outfile, at ang aming impormasyon bitmap
header sa aming outfile, at ngayon handa na kaming magsimula ng pagpunta
sa ibabaw ng aktwal na mga pixel.
>> Kaya gusto namin upang umulit sa ibabaw mga linya-scan ang infile ni.
Kaya gusto namin upang umulit sa paglipas ng oldheight.
Ito ay kung bakit namin kailangan upang matandaan ang orihinal na taas, bago namin baguhin ito
at naka-scale na ito sa pamamagitan ng n.
Ngayon kami ay pagpunta sa basahin ang isang solong hilera ng infile sa isang
nagpapahina ng lakas ng laki oldwidth.
Kaya dito, kami ay freading laki ng RGB triple, isang pixel, at lumang lapad ng
mga ito mula sa infile sa aming buffer.
At na pupuntahan maging isang buong Ang hilera sa array.
Kaya ngayon, gusto naming umulit n beses sa i-print ang hanay na ito sa aming outfile n ulit.
At kaya na kung ano ang ginagawa ito loop.
Ang panloob na loop ay iterating sa ibabaw ng Ang hilera mismo, sa ibabaw ng array, pag-print
bawat pixel sa array n ulit.
Kaya ang 0 elemento ay naka-print n beses, ang unang elemento ay pagiging
naka-print na n ulit.
At na uri ng kung paano kami ay pagpunta sa pahalang scale sa outfile, at
ito loop, dahil kami ay looping n beses, ay kung paano kami ay pagpunta sa
patayo scale.
>> Down dito, nakita namin na kailangan namin upang magdagdag ng ang padding sa dulo ng bawat hilera.
Iyon ang dahilan kung bakit ito ay nasa loob ng loop para sa na pag-print out ang mga hilera n ng lamang
ito isang hilera mula sa infile.
Pagkatapos down na dito, ako pagpunta sa laktawan sa ibabaw ang padding sa infile, dahil isang beses
tapos na kami sa isang hilera ng infile, hindi namin na nagmamalasakit sa
ano ang padding noon.
Gusto lang namin upang makakuha ng sa pangalawang hilera.
At pagkatapos na aming loop bumalik at gawin ang lahat ito muli para sa pangalawang hilera.
>> Sa wakas, sa sandaling tapos na kami sa lahat ng iyon, maaari naming isara ang infile, malapit
ang outfile, at pagbalik 0 dahil tapos na kami.
>> Ang pangalan ko ay Rob, at ito ay baguhin ang laki.
>> [MUSIC nagpe-play]