[За възпроизвеждане на музика] ROB BOWDEN: Hi. Аз съм Роб и нека размер този проблем. Така че ние ще започнем с резервното като шаблон, но ние ще бъдем направи доста промени. Сега ние виждаме, ние веднага прави променя, когато вече не сме проверка за нашия RXC не е равно 3, но сега Проверяваме RC не се равнява на 4. Тъй като ние също искат да се включат в Освен в файл и файловете, аргументи, F, който ще бъде тази фактор, чрез който ние мащабиране. Така че след като сме сигурни, че искаме да Използвайте S за сканиране е да преобразувате низа argv1 на плувка. И ние ще се съхранява че при фактор. Този допълнителен герой е като се уверите, че ние всъщност не са въвеждане нещо като 1.4 ABC в командния ред. Сега отиваме да се създаде някои псевдоними от RV2 и RV3 не са много полезни имена. Ние, вместо това, ще се обадя тях в файл и навън файл. Сега отиваме да се уверите, че нашата фактор всъщност е валиден. Така че, ако фактор е по-малко от или равно на нула или по-голяма от 100, след като на спекулация, ние трябва да отхвърлим този фактор. Когато сме сигурни, че това е добре, сега можем да отворете файла н, и ние трябва да направим уверете, че той е бил успешно отворен. Ако не го направи, това ще върне нулев. Отиваме, за да отворите файла от. И отново, ние искаме да се провери, за да се направи уверете, че е открита успешно. И ако това не е успешно се отвори, след това ние също трябва да бъдат сигурни, за да затворите н файла, който първоначално успешно отвори, или иначе ние имаме памет течове. Така че сега ние ще прочетете в растерна графика заглавния файл и растерна информация заглавна от п файл. Отиваме да се уверите, че п файл е валиден растерна графика. OK. Така че сега ние ще започнем направи няколко промени. Така че, тъй като ние ще трябва да се променя неща, ние първо искат да си спомнят за стар широчина на п файла. Ние искаме да си спомня стария подплънката на н файл, използвайки същите изчисления от copy.c. А сега отиваме да се промени на растерна информация заглавната си част. И така, ние сме се умножи както ширината , а височината от фактор, тъй като това е, което ние сме мащабиране чрез. Отиваме да се определи нова подложка на файла с като се използва нов измерването. И ние ще определи новите размер на изображението с помощта на броя на байта в един ред, който ще е броят на пикселите в този ред пъти размера на един пиксел плюс брой на байтовете на подложка в края на този ред, и се умножи всичко, което от броя на редовете, които имаме. Така че това е броя на байтовете имаме в нашите данни с изображения. Bf.Bfsize сега ще бъде броят байтове в нашия имидж бета плюс размера на нашите заглавки. Така че, плюс размера на растерна графика заглавния файл и размер на растерна информация Header. OK. Така че това е за нашите заглавки. Можем да напишем файл глава и информация Header да ни навън Файл, а ние сме добри. Сега е време да започнете действително писането на пиксел данни на вън файл. Отиваме да обяви буфер с размер старата ширина RGB утроява, и ние сме ще декларира променлива наречена ред вцепенен, което е, че ще първоначално определения равна на отрицателен 1. Ще видите, че ние ще се използва че за да се следи за това, което ред ние в момента са натоварени в този буфер. OK. Така че сега, за разлика от стандартната версия, вместо итерации над в в файл, ние ще обхождане на всеки ред в извън файл и да разбера кой ред в в досието, което искаме да място в този ред в извън файла. Така итерации през всички редове в изчакване файл с помощта на нова височина, ние сме първи ще определи реда в старата подаде ние започваш да се използва, които сме ще направя, като този ток ред разделена на фактор. Така че това ще ни даде ред в стария файл, който искаме. Така че сега, ако ред вцепенен не е равно на стария г, ние ще трябва да прочетете ред че искаме в нашия тек ред буфер. Така че как ще го направиш? Първо, ние отиваме да разбера позиция, която започва, че ред в оригиналния файл. Така че тази позиция ще бъде покрай всички наши заглавията и сега последните старите у редовете. И така, колко байта са в един ред? Отново, размер на RGB тройни пъти стар ширина плюс старата подложка, така че е най- брой байтове в един ред. И ние искаме да пропуснете последните старите у редовете. Така че ние отиваме да е търсим и ние сме използвайки търсят комплект да се започне от началото на файла. Ще се стремим да е тази позиция във файла, поставяйки ни в началото на реда, което искаме да прочетете в нашия буфер. Отиваме да се създаде ред вцепенен равна на старата база. Така че сега, ако ние контур обратно и искаме да използвате същия този ред в нашата навън файл, тогава ние няма да се чете тя отново ненужно. Така че наистина, ред е вцепенен просто оптимизация. И накрая, ние отиваме да прочетете в на текущия ред старата ширина RGB утроява че искаме от оригиналния файл. Така че сега тек ред съдържа пикселите от оригиналния файл, че ние искаме да напиши в извън файла. Така че сега, точно както по-горе, вместо итерации върху стария файл, ние трябва да обхождане на новите файлове редовете. Ами тук, вместо на итерации над всички на старите пикселите, че в тек ред, ние искаме да превъртите по цялата пиксели в нашия нов файл в тази специално ред. Защо искате да направите това? Защото ние виждаме тук, че ние не сме всъщност използва непременно всички изброени пиксела в оригиналния файл. Защото, ако ние сме свиване, можем да всъщност искате да пропуснете пикселите. И ние виждаме, че това - х разделено фактор - отразява до голяма степен до тук, където ние казваме г. разделена на фактор, за да разбера, че стария у-тия ред съответства у-я ред в този нов файл. Сега отиваме да пишат всички тези пиксели от стария ред в нашия нов ред. След като сме направили това, трябва просто да постави подложка в края на нашия ред И ние ще контур обратно и да продължи всички редове в нашия нов файл. В края на краищата, ние трябва да се закрие старата ни подаде, затворете нашия нов файл, и връщане нула, защото всичко мина добре. Моето име е Роб и това беше във ваканция. [За възпроизвеждане на музика]