>> [Музика свира]
>> ЗАМИЛА цхан: Идемо ударац ствари са промените величину.
У ресизе, корисник ће проћи у, преко командне линије, растерска слика која
они желе да скала од броја да и они прођу у,
у командној линији.
Како ми то радимо?
>> Па, прво ствари прво, да разбити овај доле у ​​корацима.
Идеш да желите да отворите инфиле да су ти дају, као и
креирате и отворите оутфиле да идете на пут
ресизед имаге ин
Затим, зато што сте промена величине, и јер је битмапа, то заглавље, тако
ћеш такође ажурира заглавље информације за оутфиле,
и пишу да унутра
Затим, ти ћеш читати у Сцанлине на инфиле,
пиксел-по-пиксел, промена величине хоризонтално и писање тих пиксела у
оутфиле, као што је наведено по скали корисника.
>> Ти ћеш запамтити да паддинг додати по потреби.
Више о томе касније.
А онда, такође ресизе вертикално.
У реду.
Дакле, ово ће бити мало више компликованији него ко је то урадио, али
оно што је слично је да ће цопи.ц, опет, бити веома корисно.
Запамтите да цопи.ц отвара фајл, ажурира информације за заглавље за
оутфиле, затим чита у Сцанлине, пиксел-по-пиксел, писање сваки пиксел
у Сцанлине излазни фајл је.
>> Дакле, опет, ваш први корак би могао вероватно бити на ЦП, цопи.ц, ресизе.ц
у ваш ПСЕТ5 директоријум.
Запамтите ипак, пре него што га копирате, да се уверите да сте разумели
цопи.ц веома темељно.
У реду.
>> Дакле, хајде да отворимо датотеку.
Ви знате како да то урадите.
Ја ћу оставити да вама.
Даље, ажурирате информације за заглавље за оутфиле.
Зато што имамо нову битмапу, имамо новог заглавља информације.
Шта се мења овде?
Па, величина фајла ће се променити јер ћемо имати више
пиксела него раније.
Величина слике је, стога, такође ће се променити, као што је
ширина и висина.
>> Дакле, које варијабле су оне, тачно?
Па, ако погледате у заглављу информације, видиш ту је
биСизеИмаге, који представља збир величина слике у бајтовима,
укључујући пиксела и пуњење.
биВидтх је ширина слике у пикселима, минус паддинг.
биХеигхт је висина слика у пикселима.
И тако они су садржани у Структуре и БИТМАПФИЛЕХЕАДЕР
БИТМАПИНФОХЕАДЕР.
Можете рећи који је који по ће бмп.х и гледа
БИТМАПИНФОХЕАДЕР струцт и виђење које су тамо наведене варијабле.
>> Тако да ажурирате оутфилес заглавље информације, идете да желите да
промените те вредности висина и ширина.
Али шансе су, можда ће бити потребно мало од заглавља информацијама инфиле а
касније, па најбоље да пратите обоје.
Али будите врло јасан са променљивом имена, тако да не случајно
пишу нетачне вредности у заглавље за оутфиле.
>> Тако да сада идемо на читање у Сцанлине пиксел-по-пиксел.
Опет, ми ћемо да се окренемо нашој Трусти филе И / О библиотеку, и погледате
фреад функција.
фреад узима у показивач на структуру који ће садржати бајтова који
сте у читању, величина сваког елемент који читате -
Поново, сизеоф ће бити корисно функционишу овде, број
елементи величине, величине, да си читање у, а онда на крају,
инпоинтер, фајл који читате.
Дакле, ви узимате елементе бројева величине од инпоинтер, и
стављајући их у подацима.
>> Сада је време да промените величину хоризонтално.
ако је н једнако 2, онда за сваки пиксел у инфиле, ми идемо да се напише
два пута у оутфиле.
Како написати фајлове?
Па, имамо фврите функцију, тако смо узети показивач на струцт
који садржи бајтове које сте писања из, а затим пролазимо у
величина, број, а излаз, где ћеш писати да.
А онда да се понови процес, ће бити моћи једноставно итеративни за петљу.
>> Али ми треба да запамтите да додам паддинг ин
Концепт постава је то, добро, сваки пиксел је три уједа, али
величина сваког Сцанлине шире бити више од 4 бајта.
Дакле, ако је број пиксела није више од 4, морамо додати неке
паддинг, који је само нуле.
Сада, за разлику ко је то урадио, и за разлику од копија, онда инфиле слика и
оутфиле фајл су различити имају паддинг другачије зато што су
различите ширине.
>> У реду.
Дакле, можда би формула доћи овамо.
Ја ћу га оставити на вама да га сазнамо, али кажем ти да, да пишем паддинг,
добро, то је само једноставна функција фпутц, пролази у карактеру
који желите да пишете, а затим датотека показивач да ли
Желим да пишем.
Дакле, сада када смо хоризонтално промењена величина, а затим користи паддинг,
запамтите да морате да померите датотеку индикатор позиција, јер вам
не могу фреад у поставом.
Дакле, желите да се уверите да је ваш фајл индикатор позиција у инфиле
је на исправан тачки.
Зато што желимо да ресизе вертикално.
Не можемо само да се протежу хоризонтално, јер свака потребе ред
да се копира н пута.
>> Сада, постоји неколико различитих начина да се то уради.
Дакле један, можемо да користимо метод препише, у да се сетимо свих пиксела
од дат ред у низу, и онда ћемо писати тај низ као
потребан број пута.
Или постоји метод рецопи где, након читања у једном реду у инфиле
а затим писање да у оутфиле, додавање паддинг, ми фсеек
Назад на почетак оригиналног реда, а затим поновите хоризонтална
промене величине одатле.
Без обзира на метод, међутим, ви ћете Желим сваки пиксел да се понови
н пута, и сваки ред да буде понавља н пута добро.
>> Уз то, имаћете битмапу већи од живота.
Моје име је Замила, а то је ЦС50.