1 00:00:00,000 --> 00:00:09,500 >> [Музика свира] 2 00:00:09,500 --> 00:00:12,350 >> ЗАМИЛА цхан: Било је Мис Скарлет са свећњак. 3 00:00:12,350 --> 00:00:13,560 Детективски роман? 4 00:00:13,560 --> 00:00:15,030 Па, ми идемо да сазнамо. 5 00:00:15,030 --> 00:00:20,870 У одбор игре Цлуе, ви можда имати физичку црвену слику. 6 00:00:20,870 --> 00:00:24,120 И то је слика веома црвене и неорганизован, а ваш посао је да 7 00:00:24,120 --> 00:00:25,490 откривају скривену поруку. 8 00:00:25,490 --> 00:00:29,740 И обично ти обезбедити црвена увеличавајуће стакло, или црвени екран за 9 00:00:29,740 --> 00:00:31,410 открије ту скривену поруку. 10 00:00:31,410 --> 00:00:33,340 Па, идемо да имитирају то. 11 00:00:33,340 --> 00:00:37,960 >> У детективски роман, ви дали битмап слику да изгледа веома неорганизован и црвена, 12 00:00:37,960 --> 00:00:43,430 а затим покрените програм детективски роман да открије скривену поруку. 13 00:00:43,430 --> 00:00:45,650 >> Па хајде да се пробије ово у корацима. 14 00:00:45,650 --> 00:00:50,390 Прво, ви желите да отворите датотеку - траг који сте добили. 15 00:00:50,390 --> 00:00:53,880 А онда такође створити Пресуда битмап фајл. 16 00:00:53,880 --> 00:00:58,240 Онда желите да ажурирате битмапу хеадер информације за пресуде оутфиле. 17 00:00:58,240 --> 00:00:59,920 Више о томе касније. 18 00:00:59,920 --> 00:01:04,319 А онда ћеш прочитати у траг, Сцанлине, пиксел по пиксел, 19 00:01:04,319 --> 00:01:07,320 променом боје пиксела као потребно, и писање 20 00:01:07,320 --> 00:01:08,960 оне у пресуди - 21 00:01:08,960 --> 00:01:12,000 пиксел по пиксел у Пресуда Сцанлине. 22 00:01:12,000 --> 00:01:13,780 >> Како кренути у вези овога? 23 00:01:13,780 --> 00:01:16,940 Па, срећом, имамо цопи.ц у коду за дистрибуцију. 24 00:01:16,940 --> 00:01:21,240 И то ће се доказати веома корисно за нас. 25 00:01:21,240 --> 00:01:29,700 Цопи.ц отвара фајл, наводи се да инфиле је заглавље, а затим ажурира 26 00:01:29,700 --> 00:01:31,070 оутфиле је заглавље. 27 00:01:31,070 --> 00:01:37,010 И онда пише сваки пиксел у Сцанлине, пиксел по пиксел, а затим 28 00:01:37,010 --> 00:01:42,390 пише да је пиксел у оутфиле. 29 00:01:42,390 --> 00:01:45,020 >> Дакле, ваш први корак би могао бити да покренете следећи 30 00:01:45,020 --> 00:01:46,420 команда у терминалу - 31 00:01:46,420 --> 00:01:50,270 ЦП цопи.ц входунит.ц. 32 00:01:50,270 --> 00:01:55,320 Ово ће створити копију цопи.ц имену входунит.ц. 33 00:01:55,320 --> 00:01:58,320 Дакле, наш први корак да отворите фајл, па, ту је тачан 34 00:01:58,320 --> 00:02:00,070 реплика које у цопи.ц. 35 00:02:00,070 --> 00:02:03,360 Зато ћу те оставити да погледате то. 36 00:02:03,360 --> 00:02:07,860 >> Оно што имамо посла са овим псет се фајл И / О, у основи узимајући фајлове, 37 00:02:07,860 --> 00:02:10,229 читање, писање, уређивање их. 38 00:02:10,229 --> 00:02:12,650 Како прво отворите датотеку? 39 00:02:12,650 --> 00:02:16,800 Па, ви идете да прогласи датотеку показивач, а онда позвати 40 00:02:16,800 --> 00:02:18,670 Функција фопен. 41 00:02:18,670 --> 00:02:23,150 Пасс на путу, или име које филе, а затим режим који желите 42 00:02:23,150 --> 00:02:24,700 на унутра отвори тај фајл 43 00:02:24,700 --> 00:02:28,620 Доношење у р ће отворити фоо.бмп за читање. 44 00:02:28,620 --> 00:02:35,670 Док фопен са пролази у В ће отворен бар.бмп, за писање датотеке и 45 00:02:35,670 --> 00:02:37,020 заправо уређивање. 46 00:02:37,020 --> 00:02:41,970 >> Дакле, сада када смо отворили датотеку, наш Следећи корак је да ажурирате информације из заглавља 47 00:02:41,970 --> 00:02:43,230 за оутфиле. 48 00:02:43,230 --> 00:02:44,610 Шта је главом Информације? 49 00:02:44,610 --> 00:02:48,160 Па, прво морамо да знамо шта је растерска. 50 00:02:48,160 --> 00:02:51,000 Битмапа је само једноставна распоред бајтова. 51 00:02:51,000 --> 00:02:55,480 И они прогласили у овом фајлу овде, бмп.х, са гомилом 52 00:02:55,480 --> 00:02:58,610 информације о томе шта растерска је заправо направљен од. 53 00:02:58,610 --> 00:03:05,730 Али оно што ми заиста стало је битмап фајл заглавље, овде, и 54 00:03:05,730 --> 00:03:08,460 Информације битмапа заглавље, овамо. 55 00:03:08,460 --> 00:03:13,170 Заглавље се састоји од неколико варијабле које ће бити веома корисно. 56 00:03:13,170 --> 00:03:18,400 Постоји биСизеИмаге, који је Укупна величина слике у бајтовима. 57 00:03:18,400 --> 00:03:20,890 А то укључује пиксела и паддинг. 58 00:03:20,890 --> 00:03:24,210 Постава је веома важно, али ћемо се на то касније. 59 00:03:24,210 --> 00:03:30,000 >> БиВидтх представља ширину слика у пикселима минус паддинг. 60 00:03:30,000 --> 00:03:34,220 БиХеигхт је тада такође висина слике у пикселима. 61 00:03:34,220 --> 00:03:38,240 А онда БИТМАПФИЛЕХЕАДЕР и БИТМАПИНФОХЕАДЕР, као што сам поменуо 62 00:03:38,240 --> 00:03:40,900 раније, они су представљени као Структуре. 63 00:03:40,900 --> 00:03:45,410 Дакле, не можете да приступите заглавље датотеке сама, али ћете желети да дођете до 64 00:03:45,410 --> 00:03:47,370 те варијабле унутра. 65 00:03:47,370 --> 00:03:48,170 >> У реду. 66 00:03:48,170 --> 00:03:50,600 Па како да ажурирате заглавља информација? 67 00:03:50,600 --> 00:03:54,020 Па, прво морамо да видимо да ли смо Потребно је да промените било коју информацију из 68 00:03:54,020 --> 00:03:58,480 инфиле, траг, да оутфиле, пресуда. 69 00:03:58,480 --> 00:04:00,250 Да ли је било шта мења у овом случају? 70 00:04:00,250 --> 00:04:04,320 Па, не, заправо, јер ћемо да се само мења боје. 71 00:04:04,320 --> 00:04:07,550 Нећемо да се мења фајл величина, величина слике, ширина, 72 00:04:07,550 --> 00:04:08,310 или висина. 73 00:04:08,310 --> 00:04:14,010 Дакле, ви сте сви у праву за сада по само копирање сваки пиксел. 74 00:04:14,010 --> 00:04:14,840 >> У реду. 75 00:04:14,840 --> 00:04:20,720 Зато сада хајде да погледамо како ми заправо може да чита сваки пиксел из датотеке. 76 00:04:20,720 --> 00:04:23,640 Још један фајл И / О функција ће доћи у игру - 77 00:04:23,640 --> 00:04:24,700 фреад. 78 00:04:24,700 --> 00:04:28,440 Потребно је у показивачем за струцт који ће садржати бајтова који 79 00:04:28,440 --> 00:04:30,110 читаш. 80 00:04:30,110 --> 00:04:31,890 Дакле, ви читате у то. 81 00:04:31,890 --> 00:04:36,090 А онда прође у величини, која је величина сваког елемента који сте 82 00:04:36,090 --> 00:04:37,360 желите да прочитате. 83 00:04:37,360 --> 00:04:40,640 Ево, функција сизеоф ће добро доћи. 84 00:04:40,640 --> 00:04:45,570 Онда прође у броју, које представља број елемената 85 00:04:45,570 --> 00:04:47,480 величина за читање. 86 00:04:47,480 --> 00:04:51,180 И коначно, инптр, који је датотека показивач да си 87 00:04:51,180 --> 00:04:52,530 ће читати из. 88 00:04:52,530 --> 00:04:58,650 Дакле, све те елементе су унутра инптр и они ће податке. 89 00:04:58,650 --> 00:05:01,660 >> Погледајмо мало примера. 90 00:05:01,660 --> 00:05:07,590 Ако желим да прочитам у подацима два пса, добро, ја могу да урадим један од два начина. 91 00:05:07,590 --> 00:05:15,250 Ја могу ни читати у два објекта величине пас из мог инптр, или ја могу да прочитам 92 00:05:15,250 --> 00:05:19,280 у једном објекат величине два пса. 93 00:05:19,280 --> 00:05:23,580 Па видиш да је у зависности од начина да ли организовати величину и број, те 94 00:05:23,580 --> 00:05:25,840 можете прочитати у истом броју бајтова. 95 00:05:25,840 --> 00:05:28,720 96 00:05:28,720 --> 00:05:33,020 >> Па сад, хајде да промените пиксел боје као што треба. 97 00:05:33,020 --> 00:05:37,320 Ако погледате бмп.х поново, затим видећете да је на дну 98 00:05:37,320 --> 00:05:42,920 РГБТРИПЛЕс су још строги, где они се састоје од три бајта. 99 00:05:42,920 --> 00:05:49,220 Један, ргбтБлуе, ргбтГреен, и ргбтРед. 100 00:05:49,220 --> 00:05:52,480 Тако да сваки од ових представља износ од плаве, зелене износ, и 101 00:05:52,480 --> 00:05:57,250 Износ црвено унутар овог пикселу, где сваки износ представља 102 00:05:57,250 --> 00:05:58,670 хексадецимални број. 103 00:05:58,670 --> 00:06:04,370 >> Дакле ФФ0000 ће бити плаве боје, јер иде од плаве, 104 00:06:04,370 --> 00:06:05,850 на зелено, на црвено. 105 00:06:05,850 --> 00:06:09,300 И онда све м ће бити бела. 106 00:06:09,300 --> 00:06:13,440 Хајде да погледамо смилеи.бмп, који имате у вашем коду за дистрибуцију. 107 00:06:13,440 --> 00:06:15,690 Ако га отворите у само слике гледалац, онда ћете 108 00:06:15,690 --> 00:06:17,080 само видим црвену смешак. 109 00:06:17,080 --> 00:06:20,380 Али узимајући дубље зароните у, ми ћемо види да је структура 110 00:06:20,380 --> 00:06:22,340 то је само од пиксела. 111 00:06:22,340 --> 00:06:25,880 Имамо беле пиксела, а затим црвене пиксела. 112 00:06:25,880 --> 00:06:31,000 Бела, фффффф, а онда све ред пиксела сам обојена у за вас 113 00:06:31,000 --> 00:06:35,440 овде, а ви видите да су 0000ФФ. 114 00:06:35,440 --> 00:06:39,760 Нула плава, зелена нула, и пуна црвена. 115 00:06:39,760 --> 00:06:45,350 А пошто смешак је осам пиксела ширине, немамо никакав паддинг. 116 00:06:45,350 --> 00:06:47,360 У реду. 117 00:06:47,360 --> 00:06:53,310 >> Дакле, ако сам био на додели различите вредности до РГБТРИПЛЕ и желео сам да 118 00:06:53,310 --> 00:06:58,350 направи зелено, онда шта ћу урадити јесте Ја бих прогласити РГБТРИПЛЕ, по имену 119 00:06:58,350 --> 00:07:02,660 троструко, а затим да приступе сваком бајт у оквиру те струцт И 120 00:07:02,660 --> 00:07:04,030 би употребили оператор дот. 121 00:07:04,030 --> 00:07:08,430 Тако трипле.ргбтБлуе, могу доделити то 0. 122 00:07:08,430 --> 00:07:13,460 Зелена ја да га доделите пун - било број, стварно, између 0 и фф. 123 00:07:13,460 --> 00:07:15,470 И онда црвени, ја такође да кажем 0. 124 00:07:15,470 --> 00:07:19,160 Тако онда да ми даје зелено пиксел. 125 00:07:19,160 --> 00:07:23,030 >> Даље, шта ако ја желим да проверим вредност нечега? 126 00:07:23,030 --> 00:07:27,250 Могао сам нешто да проверава да ли ргбтБлуе вредност троструког је 127 00:07:27,250 --> 00:07:31,080 ФФ и онда штампа, "осећам плаво! ", као резултат. 128 00:07:31,080 --> 00:07:35,640 Сада, то не мора да значи да пиксел је плаво, зар не? 129 00:07:35,640 --> 00:07:40,060 Због зелене и црвене вредности пиксел је такође може да имају не-0 вредности. 130 00:07:40,060 --> 00:07:43,470 Све ово значи да је, и све то ово је за проверу је 131 00:07:43,470 --> 00:07:45,610 за пуну плаву боју. 132 00:07:45,610 --> 00:07:50,050 Али све пиксела такође може имати парцијални вредности боја, као што је овај 133 00:07:50,050 --> 00:07:52,180 Следећи пример овде. 134 00:07:52,180 --> 00:07:55,400 >> То је мало теже да се види шта ова слика је сада. 135 00:07:55,400 --> 00:08:00,320 Ово изгледа мало висе као цлуе.бмп да ћете добити. 136 00:08:00,320 --> 00:08:03,600 Сада, физички, можда решити ово, јер има доста црвене, од 137 00:08:03,600 --> 00:08:07,040 држи црвену екран на слици тако да су остале боје могу се појавити. 138 00:08:07,040 --> 00:08:10,968 Па како да имитирају ово са ц? 139 00:08:10,968 --> 00:08:15,640 Па, можемо уклонити све црвене од слике у потпуности. 140 00:08:15,640 --> 00:08:21,870 И тако да се то уради да смо кренули свако Пикел црвени вредност на 0. 141 00:08:21,870 --> 00:08:25,020 И тако слика би изгледала мало Мало овако, где немамо црвена 142 00:08:25,020 --> 00:08:26,300 ма. 143 00:08:26,300 --> 00:08:29,390 >> Можемо видети скривену поруку за мало јасније сада. 144 00:08:29,390 --> 00:08:31,730 То је још један насмејано лице. 145 00:08:31,730 --> 00:08:33,870 Или можда бисмо могли да користите неку другу методу. 146 00:08:33,870 --> 00:08:36,480 Можда смо могли идентификовати све црвених пиксела - 147 00:08:36,480 --> 00:08:41,100 то јест, све пиксела са 0 плаво, зелено 0, и 0 црвена - 148 00:08:41,100 --> 00:08:43,169 и промените оне беле. 149 00:08:43,169 --> 00:08:45,470 И наша слика може изгледати нешто овако. 150 00:08:45,470 --> 00:08:48,250 Мало лакше видети. 151 00:08:48,250 --> 00:08:51,170 >> Постоји много других начина да се открију тајна порука, као и, 152 00:08:51,170 --> 00:08:53,730 се баве манипулацијом боја. 153 00:08:53,730 --> 00:08:57,050 Можда можете да користите неки од метода да сам горе поменуо. 154 00:08:57,050 --> 00:08:59,600 И додатно, можда ћете желети да побољша неке боје 155 00:08:59,600 --> 00:09:02,620 и донети оне напоље. 156 00:09:02,620 --> 00:09:06,190 >> Дакле, сада када смо променили пиксела боја, поред ми само треба да их пишу 157 00:09:06,190 --> 00:09:08,500 у на Сцанлине, пиксел по пиксел. 158 00:09:08,500 --> 00:09:11,860 А опет, ви ћете желети да погледате уназад да цопи.ц, ако нисте копирали 159 00:09:11,860 --> 00:09:18,170 већ, и погледајте фврите функција, која узима податке, показивач 160 00:09:18,170 --> 00:09:23,230 на струцт која садржи бајтова да читате из, величине 161 00:09:23,230 --> 00:09:26,610 ставке, број ставки, и онда оутптр - 162 00:09:26,610 --> 00:09:29,450 дестинација тих фајлова. 163 00:09:29,450 --> 00:09:34,010 >> Након што напишете у пикселима, ви ћете такође морају да пишу у пуњење. 164 00:09:34,010 --> 00:09:34,970 Шта је паддинг? 165 00:09:34,970 --> 00:09:38,670 Па, сваки пиксел ргбт је дугачак три бајта. 166 00:09:38,670 --> 00:09:43,670 Али, Сцанлине за битмапиране слике мора да буде више од четири бајта. 167 00:09:43,670 --> 00:09:47,650 И ако је број пиксела није више од четири, онда морамо да додате 168 00:09:47,650 --> 00:09:48,880 паддинг ово. 169 00:09:48,880 --> 00:09:51,420 Постава је само представљен 0с. 170 00:09:51,420 --> 00:09:54,380 Дакле, како да пишу, или прочитао ово? 171 00:09:54,380 --> 00:09:59,280 Па, испоставило се да не можете заправо фреад паддинг, али можете 172 00:09:59,280 --> 00:10:00,970 израчунати га. 173 00:10:00,970 --> 00:10:04,400 >> У овом случају, траг и пресуда имају исту ширину, тако 174 00:10:04,400 --> 00:10:05,910 паддинг је исти. 175 00:10:05,910 --> 00:10:09,370 И паддинг, као што ћете видети у цопи.ц, обрачунава 176 00:10:09,370 --> 00:10:11,790 са доњом формулом - 177 00:10:11,790 --> 00:10:16,690 би.биВидтх пута сизеоф (РГБТРИПЛЕ) ће дајте нам колико бајтова БМП 178 00:10:16,690 --> 00:10:18,280 има у сваком реду. 179 00:10:18,280 --> 00:10:21,890 Одатле, модулос и одузимања са 4 може израчунати колико 180 00:10:21,890 --> 00:10:25,610 многи бајтова мора бити додата тако да се више бајтова о 181 00:10:25,610 --> 00:10:27,250 сваки ред је четири. 182 00:10:27,250 --> 00:10:30,490 >> Сада када имамо формулу за колико паддинг нам треба, сада 183 00:10:30,490 --> 00:10:31,610 можемо га написати. 184 00:10:31,610 --> 00:10:34,080 Сада, сам раније поменуо, паддинг је само 0с. 185 00:10:34,080 --> 00:10:39,730 Дакле, у том случају, ми само стављање цхар, у овом случају 0, у наше 186 00:10:39,730 --> 00:10:41,710 оутптр - наш оутфиле. 187 00:10:41,710 --> 00:10:47,530 Тако да само могу бити фпутц 0, зарез оутптр. 188 00:10:47,530 --> 00:10:52,400 >> Дакле, док смо читали у наш фајл, фајл И / О је пратила наше 189 00:10:52,400 --> 00:10:57,440 позиција у тим датотекама са нечим зове индикатор фајл положај. 190 00:10:57,440 --> 00:10:59,350 Мислите о томе као курсора. 191 00:10:59,350 --> 00:11:03,550 У суштини, она напредује сваки пут да ми фреад, али имамо 192 00:11:03,550 --> 00:11:05,671 контролу над њим, такође. 193 00:11:05,671 --> 00:11:11,030 >> Да бисте померили индикатор фајл позицију, можете да користите функцију фсеек. 194 00:11:11,030 --> 00:11:15,600 Где инптр представља датотеку Показивач да сте у потрази за, 195 00:11:15,600 --> 00:11:20,370 износ је број бајтова који сте Желим да померите курсор, а затим из 196 00:11:20,370 --> 00:11:23,470 се односи на референтну тачку одакле се курсор налази. 197 00:11:23,470 --> 00:11:26,770 Ако прође у СЕЕК_ЦУР, да представља струју 198 00:11:26,770 --> 00:11:28,100 позиција у датотеци. 199 00:11:28,100 --> 00:11:31,020 Или можете да користите неке друге параметре. 200 00:11:31,020 --> 00:11:35,400 Дакле, ми смо можда желети да користите фсеек да прескочите над пуњење у у датотеци. 201 00:11:35,400 --> 00:11:39,410 А опет, ако сте заглављени, ту је пример да се у цопи.ц. 202 00:11:39,410 --> 00:11:43,260 >> Дакле, сада смо отворили датотеку, траг, и пресуда. 203 00:11:43,260 --> 00:11:46,450 Ми смо ажурирали информације за заглавље наша пресуда, јер свака 204 00:11:46,450 --> 00:11:48,730 битмапа треба заглавље. 205 00:11:48,730 --> 00:11:52,280 Онда смо прочитали у траг је Сцанлине, пиксел по пиксел, променом 206 00:11:52,280 --> 00:11:55,210 свака боја по потреби, и писања оних у 207 00:11:55,210 --> 00:11:57,340 пресуда, пиксел по пиксел. 208 00:11:57,340 --> 00:12:01,550 Када отворите пресуду, можете видети ко кривац, или шта тајна 209 00:12:01,550 --> 00:12:02,850 порука. 210 00:12:02,850 --> 00:12:05,550 Моје име је Замила, и ово је детективски роман. 211 00:12:05,550 --> 00:12:12,864