1 00:00:00,000 --> 00:00:10,210 >> [Музика свира] 2 00:00:10,210 --> 00:00:13,320 >> ЗАМИЛА цхан: Идемо ударац ствари са промените величину. 3 00:00:13,320 --> 00:00:17,710 У ресизе, корисник ће проћи у, преко командне линије, растерска слика која 4 00:00:17,710 --> 00:00:21,860 они желе да скала од броја да и они прођу у, 5 00:00:21,860 --> 00:00:23,770 у командној линији. 6 00:00:23,770 --> 00:00:24,690 Како ми то радимо? 7 00:00:24,690 --> 00:00:28,270 >> Па, прво ствари прво, да разбити овај доле у ​​корацима. 8 00:00:28,270 --> 00:00:31,510 Идеш да желите да отворите инфиле да су ти дају, као и 9 00:00:31,510 --> 00:00:35,560 креирате и отворите оутфиле да идете на пут 10 00:00:35,560 --> 00:00:38,020 ресизед имаге ин 11 00:00:38,020 --> 00:00:42,050 Затим, зато што сте промена величине, и јер је битмапа, то заглавље, тако 12 00:00:42,050 --> 00:00:46,080 ћеш такође ажурира заглавље информације за оутфиле, 13 00:00:46,080 --> 00:00:47,950 и пишу да унутра 14 00:00:47,950 --> 00:00:51,850 Затим, ти ћеш читати у Сцанлине на инфиле, 15 00:00:51,850 --> 00:00:56,890 пиксел-по-пиксел, промена величине хоризонтално и писање тих пиксела у 16 00:00:56,890 --> 00:01:00,910 оутфиле, као што је наведено по скали корисника. 17 00:01:00,910 --> 00:01:03,940 >> Ти ћеш запамтити да паддинг додати по потреби. 18 00:01:03,940 --> 00:01:05,400 Више о томе касније. 19 00:01:05,400 --> 00:01:07,790 А онда, такође ресизе вертикално. 20 00:01:07,790 --> 00:01:08,890 У реду. 21 00:01:08,890 --> 00:01:13,280 Дакле, ово ће бити мало више компликованији него ко је то урадио, али 22 00:01:13,280 --> 00:01:18,310 оно што је слично је да ће цопи.ц, опет, бити веома корисно. 23 00:01:18,310 --> 00:01:23,160 Запамтите да цопи.ц отвара фајл, ажурира информације за заглавље за 24 00:01:23,160 --> 00:01:28,250 оутфиле, затим чита у Сцанлине, пиксел-по-пиксел, писање сваки пиксел 25 00:01:28,250 --> 00:01:30,510 у Сцанлине излазни фајл је. 26 00:01:30,510 --> 00:01:37,040 >> Дакле, опет, ваш први корак би могао вероватно бити на ЦП, цопи.ц, ресизе.ц 27 00:01:37,040 --> 00:01:40,560 у ваш ПСЕТ5 директоријум. 28 00:01:40,560 --> 00:01:43,920 Запамтите ипак, пре него што га копирате, да се уверите да сте разумели 29 00:01:43,920 --> 00:01:46,600 цопи.ц веома темељно. 30 00:01:46,600 --> 00:01:47,620 У реду. 31 00:01:47,620 --> 00:01:49,880 >> Дакле, хајде да отворимо датотеку. 32 00:01:49,880 --> 00:01:50,870 Ви знате како да то урадите. 33 00:01:50,870 --> 00:01:52,600 Ја ћу оставити да вама. 34 00:01:52,600 --> 00:01:56,050 Даље, ажурирате информације за заглавље за оутфиле. 35 00:01:56,050 --> 00:01:59,240 Зато што имамо нову битмапу, имамо новог заглавља информације. 36 00:01:59,240 --> 00:02:00,970 Шта се мења овде? 37 00:02:00,970 --> 00:02:06,000 Па, величина фајла ће се променити јер ћемо имати више 38 00:02:06,000 --> 00:02:07,900 пиксела него раније. 39 00:02:07,900 --> 00:02:11,060 Величина слике је, стога, такође ће се променити, као што је 40 00:02:11,060 --> 00:02:13,050 ширина и висина. 41 00:02:13,050 --> 00:02:17,180 >> Дакле, које варијабле су оне, тачно? 42 00:02:17,180 --> 00:02:20,960 Па, ако погледате у заглављу информације, видиш ту је 43 00:02:20,960 --> 00:02:25,640 биСизеИмаге, који представља збир величина слике у бајтовима, 44 00:02:25,640 --> 00:02:28,340 укључујући пиксела и пуњење. 45 00:02:28,340 --> 00:02:32,520 биВидтх је ширина слике у пикселима, минус паддинг. 46 00:02:32,520 --> 00:02:35,580 биХеигхт је висина слика у пикселима. 47 00:02:35,580 --> 00:02:39,200 И тако они су садржани у Структуре и БИТМАПФИЛЕХЕАДЕР 48 00:02:39,200 --> 00:02:40,390 БИТМАПИНФОХЕАДЕР. 49 00:02:40,390 --> 00:02:45,300 Можете рећи који је који по ће бмп.х и гледа 50 00:02:45,300 --> 00:02:49,670 БИТМАПИНФОХЕАДЕР струцт и виђење које су тамо наведене варијабле. 51 00:02:49,670 --> 00:02:54,700 >> Тако да ажурирате оутфилес заглавље информације, идете да желите да 52 00:02:54,700 --> 00:02:57,025 промените те вредности висина и ширина. 53 00:02:57,025 --> 00:03:00,570 Али шансе су, можда ће бити потребно мало од заглавља информацијама инфиле а 54 00:03:00,570 --> 00:03:03,670 касније, па најбоље да пратите обоје. 55 00:03:03,670 --> 00:03:07,770 Али будите врло јасан са променљивом имена, тако да не случајно 56 00:03:07,770 --> 00:03:12,490 пишу нетачне вредности у заглавље за оутфиле. 57 00:03:12,490 --> 00:03:16,160 >> Тако да сада идемо на читање у Сцанлине пиксел-по-пиксел. 58 00:03:16,160 --> 00:03:20,210 Опет, ми ћемо да се окренемо нашој Трусти филе И / О библиотеку, и погледате 59 00:03:20,210 --> 00:03:22,100 фреад функција. 60 00:03:22,100 --> 00:03:26,150 фреад узима у показивач на структуру који ће садржати бајтова који 61 00:03:26,150 --> 00:03:30,130 сте у читању, величина сваког елемент који читате - 62 00:03:30,130 --> 00:03:34,410 Поново, сизеоф ће бити корисно функционишу овде, број 63 00:03:34,410 --> 00:03:38,820 елементи величине, величине, да си читање у, а онда на крају, 64 00:03:38,820 --> 00:03:41,310 инпоинтер, фајл који читате. 65 00:03:41,310 --> 00:03:46,770 Дакле, ви узимате елементе бројева величине од инпоинтер, и 66 00:03:46,770 --> 00:03:49,040 стављајући их у подацима. 67 00:03:49,040 --> 00:03:51,695 >> Сада је време да промените величину хоризонтално. 68 00:03:51,695 --> 00:03:56,880 ако је н једнако 2, онда за сваки пиксел у инфиле, ми идемо да се напише 69 00:03:56,880 --> 00:04:00,870 два пута у оутфиле. 70 00:04:00,870 --> 00:04:02,210 Како написати фајлове? 71 00:04:02,210 --> 00:04:06,400 Па, имамо фврите функцију, тако смо узети показивач на струцт 72 00:04:06,400 --> 00:04:10,170 који садржи бајтове које сте писања из, а затим пролазимо у 73 00:04:10,170 --> 00:04:14,430 величина, број, а излаз, где ћеш писати да. 74 00:04:14,430 --> 00:04:19,200 А онда да се понови процес, ће бити моћи једноставно итеративни за петљу. 75 00:04:19,200 --> 00:04:21,740 >> Али ми треба да запамтите да додам паддинг ин 76 00:04:21,740 --> 00:04:26,040 Концепт постава је то, добро, сваки пиксел је три уједа, али 77 00:04:26,040 --> 00:04:28,940 величина сваког Сцанлине шире бити више од 4 бајта. 78 00:04:28,940 --> 00:04:33,660 Дакле, ако је број пиксела није више од 4, морамо додати неке 79 00:04:33,660 --> 00:04:36,630 паддинг, који је само нуле. 80 00:04:36,630 --> 00:04:42,130 Сада, за разлику ко је то урадио, и за разлику од копија, онда инфиле слика и 81 00:04:42,130 --> 00:04:44,370 оутфиле фајл су различити имају паддинг другачије зато што су 82 00:04:44,370 --> 00:04:46,360 различите ширине. 83 00:04:46,360 --> 00:04:46,690 >> У реду. 84 00:04:46,690 --> 00:04:51,050 Дакле, можда би формула доћи овамо. 85 00:04:51,050 --> 00:04:55,120 Ја ћу га оставити на вама да га сазнамо, али кажем ти да, да пишем паддинг, 86 00:04:55,120 --> 00:04:59,360 добро, то је само једноставна функција фпутц, пролази у карактеру 87 00:04:59,360 --> 00:05:02,200 који желите да пишете, а затим датотека показивач да ли 88 00:05:02,200 --> 00:05:04,280 Желим да пишем. 89 00:05:04,280 --> 00:05:08,670 Дакле, сада када смо хоризонтално промењена величина, а затим користи паддинг, 90 00:05:08,670 --> 00:05:12,030 запамтите да морате да померите датотеку индикатор позиција, јер вам 91 00:05:12,030 --> 00:05:14,480 не могу фреад у поставом. 92 00:05:14,480 --> 00:05:18,230 Дакле, желите да се уверите да је ваш фајл индикатор позиција у инфиле 93 00:05:18,230 --> 00:05:19,980 је на исправан тачки. 94 00:05:19,980 --> 00:05:23,970 Зато што желимо да ресизе вертикално. 95 00:05:23,970 --> 00:05:27,090 Не можемо само да се протежу хоризонтално, јер свака потребе ред 96 00:05:27,090 --> 00:05:30,370 да се копира н пута. 97 00:05:30,370 --> 00:05:33,050 >> Сада, постоји неколико различитих начина да се то уради. 98 00:05:33,050 --> 00:05:39,010 Дакле један, можемо да користимо метод препише, у да се сетимо свих пиксела 99 00:05:39,010 --> 00:05:42,840 од дат ред у низу, и онда ћемо писати тај низ као 100 00:05:42,840 --> 00:05:44,730 потребан број пута. 101 00:05:44,730 --> 00:05:49,530 Или постоји метод рецопи где, након читања у једном реду у инфиле 102 00:05:49,530 --> 00:05:53,530 а затим писање да у оутфиле, додавање паддинг, ми фсеек 103 00:05:53,530 --> 00:05:57,250 Назад на почетак оригиналног реда, а затим поновите хоризонтална 104 00:05:57,250 --> 00:05:58,710 промене величине одатле. 105 00:05:58,710 --> 00:06:02,280 Без обзира на метод, међутим, ви ћете Желим сваки пиксел да се понови 106 00:06:02,280 --> 00:06:06,370 н пута, и сваки ред да буде понавља н пута добро. 107 00:06:06,370 --> 00:06:09,160 >> Уз то, имаћете битмапу већи од живота. 108 00:06:09,160 --> 00:06:11,760 Моје име је Замила, а то је ЦС50. 109 00:06:11,760 --> 00:06:19,542