>> [Музички]
>> Роб BOWDEN: Здраво, јас сум Роб, ајде да се обиде ова за големина.
Значи, ние сме повторно ќе се започне со во основа копија од copy.c, и
направи неколку промени.
Забелешка веднаш гледаме промени, каде што наместо на проверка за да види дали
argc не еднакви 3, ние сакаме да се провери ако argc не е еднакво на 4, бидејќи
сега ние не сме само земање во infile и outfile, но ние сме, исто така, земајќи ги во
n, која е износот што ние сме скалирање на оригиналната слика од.
Откако ќе бидете сигурни дека тоа, ние само може да конвертира n цел број со користење на atoi.
>> Значи, сега ние ќе треба да се создаде некои псевдоними, само јавете се argv 2 infile, и
argv 3 outfile, бидејќи argv 2 и argv 3 не се многу корисни имиња.
Сега ние сакаме да се провери да бидете сигурни дека n е во рамките на границите ние очекуваме, па
спецификации се наведува дека ако тоа е помала или еднаков на нула, или поголема од 100,
тогаш тоа е невалиден големината фактор, и ние треба да го предупреди корисникот за тоа.
>> Откако ќе бидете надвор од сето тоа, можеме да конечно ги отвориме нашите infile, и ние треба
на грешка проверете, за да бидете сигурни дека отворање не не поради некоја причина.
Ние исто така треба да ги отвориме нашите outfile и повторно грешка проверете, за да бидете сигурни дека
не успеваат поради некоја причина.
Но бидете сигурни дека ако отворањето на outfile не успеа дека ние треба да се затвори
на infile, која веќе беше отворена.
>> Значи, под претпоставка дека не не, а потоа we're - исто како во copy.c--
ќе прочитате во заглавјето од infile.
Ние ќе бидете сигурни дека тоа е валидна bitmap, но сега ние ќе треба да направите некои
работите малку поинаку.
Значи прво, ние ќе сакате да го се сеќаваат на оригиналниот ширина и висина
на infile, бидејќи ние се случува да се било да е тоа се менува за outfile.
Па сега се сеќавам дека за чудни причини bi.biheight, е негативен, и
па така вистинските висина, во позитивна, ние сакате да се земе апсолутната вредност.
>> Сега, Соочи се случува да биде ист пресметка како што беше во copy.c,
користење на старите ширина, и сега сме всушност, се случува да се промени
што во нашата заглавието.
Па ние ќе да се размножуваат нашите ширина од n, бидејќи ние сме скалирање на ширина од
n, се множи со висина од n, бидејќи ние сме скалирање со n, и сега имаме
пресметката за нова баласт базирани на нова ширина.
>> Па сега ние треба да се променат некои други области во нашата заглавието.
Bi.biSizeImage би требало да биде големина на сите бајти во пиксели
и баласт на сликата.
И така на големината на еден ред на нашата сликата е големината на RGB трокреветни, големината
на еден пиксел, пати повеќе од бројот на пиксели во ред, плус баласт на
на крајот на ред.
А потоа ние ќе ја помножите со апсолутната вредност на нашите висина за да се добие
на вкупниот број на бајти во сликата на податоци.
bf.bfSize е само вкупниот број на бајти во нашата слика на податоци, па
bi.biSizeImage, плус големината на нашата заглавија.
Значи, додавање на големината на bitmap датотека насловот, и големината на битмапа инфо
насловот, во ред.
Па тоа е сите ние треба да промени во нашата заглавија.
Сега ние ќе напише насловот bitmap датотека на нашите outfile, а нашите bitmap инфо
насловот на нашата outfile, а сега ние сме подготвени да тргнат
во текот на актуелните пиксели.
>> Затоа сакаме да iterate преку скенирање линии на infile е.
Затоа сакаме да iterate преку oldheight.
Ова е причината зошто ни е потребно да се потсетиме на оригиналниот висина, пред да го промените
и тоа намалени од n.
Сега ние ќе треба да го прочитате една ред на infile во
тампон големина oldwidth.
Па еве, ние сме freading големина на RGB трокреветни, еден пиксел, и стари ширина на
нив од infile во нашите тампон.
И дека ќе биде цела ред во оваа низа.
Па сега, ние сакаме да iterate n пати да печати ја оваа ред на нашата outfile n пати.
И така тоа е она што овој циклус се прави.
Оваа внатрешна јамка е процесирањето над себе ред, во текот на низа, печатење
секој пиксел во низа n пати.
Па 0. елемент се испечатени n пати, првиот елемент е од
печатени n пати.
И тоа е вид на како ние ќе се хоризонтално скала во outfile и
овој циклус, бидејќи ние сме looping n пати, е како ние ќе се
вертикално скала.
>> Долу тука, можеме да видиме дека ние треба да додадете Соочи на крајот на секој ред.
Тоа е зошто тоа е во внатрешноста на за телефонска линија тоа е печатење на n редови од само
овој ред од infile.
Потоа долу тука, јас ќе одам да ја прескокнете над Соочи во infile, бидејќи еднаш
ние сме направиле со еден ред на infile, ние не се грижат за
што Соочи е.
Ние само сакаме да се дојде до вториот ред.
А потоа ние ќе јамка назад и не сите ова повторно за вториот ред.
>> Конечно, откако ќе завршиш со сето тоа, ние може да го затвори infile, во близина
на outfile, и да се врати 0 затоа што ние сме направиле.
>> Моето име е Роб, и тоа беше менување на големината.
>> [Музички]