>> [За възпроизвеждане на музика]
>> ROB Боудън: Здравейте, аз съм Роб, нека пробвай това за размер.
Така че, ние отново ще започнем с в основата на копие от резервното, и
направи няколко промени.
Имайте предвид, веднага виждаме промяна, където вместо да се проверява, за да видите, ако
argc не равно 3, ние искаме да се провери ако argc не е равно на 4, тъй като
Сега ние не сме просто като в INFILE и outfile, но ние също така се вземат в
н, който е сумата, която сме мащабиране на оригиналното изображение от.
След като ние сме сигурни, че можем просто конвертирате н до цяло число, използвайки atoi.
>> Така че, сега отиваме да се създаде някаква псевдоними, просто се обадете ARGV 2 INFILE, и
ARGV 3 outfile, защото ARGV 2 и ARGV 3 не са много полезни имена.
Сега искаме да се провери, за да се уверете, че н е в границите, ние очакваме, така че
спец. уточнява, че ако е по-малко от или равно на нула, или по-голяма от 100,
тогава това е невалиден преоразмеряване фактор, и ние трябва да предупреждава потребителя за това.
>> След като ние сме отвъд всичко това, ние можем да най-накрая отвори нашия INFILE, и ние трябва
на грешка проверка, за да се уверите, че отваряне не се провали по някаква причина.
Ние също трябва да отворите нашия outfile, и отново грешка се уверете, че
не се провали по някаква причина.
Но бъдете сигурни, ако откриването на outfile провали, че ние трябва да се затвори
на INFILE, която вече е открит.
>> Така че, ако се приеме, че не се провали, след това we're - точно както и в резервното--
ще прочетете в заглавната от INFILE.
Отиваме да се уверите, че това е валидно растерна графика, но сега отиваме да се направят някои
нещата малко по-различно.
Така че, на първо място, ние ще искате да Спомням си оригиналната широчина и височина
на INFILE, защото ние ще да го променя за outfile.
Така че сега се помни, че за странни причини bi.biheight, е отрицателно, и
така че действителната височина, в положителен, ние Искам да взема абсолютната стойност.
>> Сега, пълнежът ще бъде същата изчисление, тъй като беше в резервното,
използвате стария ширината, и сега сме всъщност няма да се промени
Какво има в нашата заглавна.
Така че ние отиваме да се размножават нашата ширина от н, тъй като ние сме мащабиране на ширината от
н, умножете височината от N, тъй като ние сме мащабиране от N, а сега имаме
изчисляване за нова подложка на базата на новата ширина.
>> Така че сега ние трябва да променим някои други области в нашата заглавна.
Bi.biSizeImage е трябвало да бъде размер на всички байтове в пикселите
и подплата на изображението.
И така, размерът на един ред от нашия снимката е размер на RGB тройна, размерът
на един пиксел, умножен по броя на пиксела в един ред, плюс пълнежа при
на края на реда.
И след това отиваме да се размножават, че от абсолютната стойност на нашата височина, за да получите
общия брой на байтовете в данните на изображението.
bf.bfSize е просто общия брой байтове в нашите данни с изображения, така че
bi.biSizeImage, плюс размер на нашите заглавки.
Така че, добавяйки, от размера на растерна графика файл хедър, и размер на растерна информация
хедър, OK.
Така че това е всичко, което трябва да промените в нашите заглавки.
Сега ще пиша заглавието на растерна графика файл в нашия outfile и нашата растерна информация
служебната информация към нашия outfile, и сега ние сме готови да започнем ще
върху реалните пиксели.
>> Така че ние искаме да обхождане линии за сканиране на INFILE те години.
Така че ние искаме да обхождане oldheight.
Ето защо ние трябва да помним оригинална височина, преди да го промените
и да го мащабира от п.
Сега отиваме да прочетете една-единствена ред на INFILE в
буфер с размер oldwidth.
Така че тук, ние сме freading размер на RGB тройни, един пиксел, и стари ширина
тях от INFILE в нашия буфер.
И това ще бъде един цял ред в този масив.
Така че сега, ние искаме да превъртите N пъти, за да отпечатате този ред, за да ни outfile N пъти.
И така, това е, което този цикъл се прави.
Тази вътрешна линия е итерации над река Самият ред, над масив, отпечатването
всеки пиксел в масива п пъти.
Така нулев елемент се отпечатва п пъти, първият елемент е
печатни п пъти.
И това е нещо за това как ние ще се хоризонтално мащабиране в outfile, и
този цикъл, тъй като ние сме примка п пъти, е как ние ще
вертикално мащаб.
>> Първа тук, ние виждаме, че ние трябва да добавите пълнежа в края на всеки ред.
Ето защо това е вътре в контура за това е отпечатване на п редовете на само
този един ред от INFILE.
После тук, аз отивам да прескачам пълнежа в INFILE, тъй като веднъж
приключим с един ред от INFILE, ние не се грижи за
това, което е подложка.
Ние просто искаме да стигнем до втория ред.
И тогава ние ще контур обратно и да вършиш всичките това отново за втория ред.
>> И накрая, след като сме готови с всичко това, можем да затворите INFILE, близо
на outfile и връщане 0, защото сме готови.
>> Моето име е Роб, и това е за преоразмеряване.
>> [За възпроизвеждане на музика]