[MUSIC Playing] Rob Bowden: Hi, unë jam Rob, le të provoni këtë në për madhësinë. Pra, ne përsëri do të fillojë me në thelb një kopje e copy.c, dhe bëjë disa ndryshime. Vini re menjëherë shohim një ndryshim, ku në vend të kontrolluar për të parë nëse argc nuk të barabartë 3, ne duam të kontrolloni nëse argc nuk ka të barabartë 4, që nga tani ne nuk jemi vetëm duke marrë në një infile dhe outfile, por ne jemi edhe duke marrë në n, e cila është shuma që ne jemi shkallë imazhin origjinal nga. Pasi ne jemi të sigurt për këtë, ne mund vetëm të konvertohet N tek një numër i plotë i përdorur atoi. Pra, tani ne jemi duke shkuar për të krijuar disa emërtimet, vetëm thirrje ARGV 2 infile, dhe ARGV 3 outfile, sepse ARGV 2 dhe ARGV 3 nuk janë emra shumë të dobishme. Tani ne duam të kontrolluar për të siguruar n është brenda kufijve të presim, kështu spekulim specifikon se në qoftë se kjo është më pak se ose e barabarte me zero, ose me i madh se 100, atëherë kjo është një faktor i pavlefshëm resize, dhe ne duhet të paralajmërojnë përdoruesit e se. Pasi ne jemi përtej të gjitha që, ne mund më në fund hapur infile tonë, dhe ne kemi nevojë të gabimit të kontrolluar për të siguruar që Hapja nuk dështojnë për disa arsye. Ne gjithashtu duhet të hapur outfile tonë, dhe përsëri error kontrolloni për të siguruar që nuk dështojnë për disa arsye. Por të jetë i sigurt nëse hapja e outfile dështuar që ne kemi nevojë për të mbyllur infile, e cila është hapur tashmë. Pra, duke supozuar se nuk dështojnë, atëherë we're - ashtu si në copy.c-- do të lexoni në kokë nga infile. Ne jemi duke shkuar për t'u siguruar se është një e vlefshme bitmap, por tani ne jemi duke shkuar për të bërë disa gjërat pak më ndryshe. Pra, së pari, ne do të duan të mos harroni gjerësinë origjinale dhe lartësi i infile, sepse ne jemi duke shkuar për të ndryshuar atë për outfile. Deri tani mbani mend se për arsye të çuditshme bi.biheight, është negativ, dhe kështu lartësia aktuale, në pozitive, ne duan të marrin vlerën absolute. Tani, mbushje do të jenë të njëjta Llogaritja siç ishte në copy.c, duke përdorur gjerësinë e vjetër, dhe tani ne jemi në të vërtetë do të ndryshojë çfarë e në kokë tonë. Pra, ne do të shumohen gjerësi tonë duke n, pasi ne jemi shkallë gjerësinë nga n, shumohen lartësinë nga n, pasi ne jemi shkallë nga n, dhe tani ne kemi llogaritja për një mbushje të re bazuar mbi gjerësi e re. Deri tani ne kemi nevojë për të ndryshuar disa fusha të tjera në kokë tonë. Bi.biSizeImage është menduar të jetë Madhësia e të gjitha bytes në pixels dhe mbushje e imazhit. Dhe kështu madhësinë e një rresht të vetëm të tonë Imazhi është madhësia e RGB trefishtë, madhësia e një pixel vetme, herë numrin e piksele në një rresht, plus mbushje në në fund të rreshtit. Dhe pastaj ne do të shumohen se nga vlera absolute e lartësisë tonë për të marrë numri i përgjithshëm i bytes në të dhënat e imazhit. bf.bfSize është vetëm numri i përgjithshëm i bytes në të dhënat tona imazhit, kështu bi.biSizeImage, plus Madhësia e headers tona. Pra, duke shtuar nga madhësia e skedarit bitmap header, dhe madhësia e info bitmap header, OK. Pra, kjo është e gjitha ne kemi nevojë për të ndryshojë në headers tona. Tani ne do të shkruani skedarit bitmap header të outfile tonë, dhe info tonë bitmap header për outfile tonë, dhe tani ne jemi gati për të filluar duke shkuar mbi pixels aktuale. Pra, ne duam të iterate mbi scan linjat e infile-së. Pra, ne duam të iterate mbi oldheight. Kjo është arsyeja pse ne kemi nevojë për të kujtuar lartësia origjinal, para se të ndryshuar atë dhe luspa atë me n. Tani ne jemi duke shkuar për të lexuar një të vetme rresht i infile në një buffer të madhësisë oldwidth. Pra këtu, ne jemi freading Madhësia e RGB trefishtë, e pixel, dhe gjerësia e vjetër e ata nga infile në tampon tonë. Dhe kjo do të jetë një të tërë rresht në këtë rrjet. Deri tani, ne duam të iterate herë n për të printoni këtë rresht për të outfile n herë tonë. Dhe kështu kjo është ajo që është duke e bërë këtë lak. Kjo loop brendshme është iterating mbi rresht veten, mbi array, shtypjen çdo piksel në rrjet n herë. Pra, elementi 0 është duke u shtypur n herë, elementi i parë është qenit shtypura herë n. Dhe kjo është lloj i si ne jemi duke shkuar për horizontalisht shkallë në outfile, dhe kjo loop, pasi ne jemi duke looping n herë, është se si ne jemi duke shkuar për shkallë vertikalisht. Poshtë këtu, shohim se ne kemi nevojë për të shtuar mbushje në fund të çdo rresht. Kjo është arsyeja pse kjo është brenda për lak që është shtypjen nga rreshtat n e vetëm ky rresht një nga infile. Pastaj këtu poshtë, unë jam duke shkuar për të kaloni mbi mbushje në infile, që nga një herë ne jemi duke bërë me një rresht të infile, ne nuk e kujdesit për çfarë ishte mbushje. Ne vetëm duam të shkuar në rreshtin e dytë. Dhe pastaj ne do të loop mbrapa dhe bën të gjitha kjo përsëri për rreshtin e dytë. Së fundi, pasi ne jemi bërë me të gjitha që, ne mund të mbyllë infile, afër outfile, dhe kthimi 0 sepse ne jemi bërë. Emri im është Rob, dhe kjo ishte resize. [MUSIC Playing]