1 00:00:00,000 --> 00:00:00,996 2 00:00:00,996 --> 00:00:12,470 >> [За възпроизвеждане на музика] 3 00:00:12,470 --> 00:00:13,210 >> ROB BOWDEN: Hi. 4 00:00:13,210 --> 00:00:16,870 Аз съм Роб и нека размер този проблем. 5 00:00:16,870 --> 00:00:20,990 Така че ние ще започнем с резервното като шаблон, но ние ще бъдем 6 00:00:20,990 --> 00:00:23,340 направи доста промени. 7 00:00:23,340 --> 00:00:27,570 >> Сега ние виждаме, ние веднага прави променя, когато вече не сме проверка 8 00:00:27,570 --> 00:00:31,560 за нашия RXC не е равно 3, но сега Проверяваме RC не се равнява на 4. 9 00:00:31,560 --> 00:00:34,670 Тъй като ние също искат да се включат в Освен в файл и файловете, 10 00:00:34,670 --> 00:00:39,550 аргументи, F, който ще бъде тази фактор, чрез който ние мащабиране. 11 00:00:39,550 --> 00:00:45,430 >> Така че след като сме сигурни, че искаме да Използвайте S за сканиране е да преобразувате низа 12 00:00:45,430 --> 00:00:49,030 argv1 на плувка. 13 00:00:49,030 --> 00:00:51,330 И ние ще се съхранява че при фактор. 14 00:00:51,330 --> 00:00:55,180 Този допълнителен герой е като се уверите, че ние всъщност не са въвеждане 15 00:00:55,180 --> 00:00:59,200 нещо като 1.4 ABC в командния ред. 16 00:00:59,200 --> 00:01:02,960 >> Сега отиваме да се създаде някои псевдоними от RV2 и RV3 не са 17 00:01:02,960 --> 00:01:04,310 много полезни имена. 18 00:01:04,310 --> 00:01:07,660 Ние, вместо това, ще се обадя тях в файл и навън файл. 19 00:01:07,660 --> 00:01:11,580 Сега отиваме да се уверите, че нашата фактор всъщност е валиден. 20 00:01:11,580 --> 00:01:16,330 Така че, ако фактор е по-малко от или равно на нула или по-голяма от 100, след като на 21 00:01:16,330 --> 00:01:19,660 спекулация, ние трябва да отхвърлим този фактор. 22 00:01:19,660 --> 00:01:23,890 >> Когато сме сигурни, че това е добре, сега можем да отворете файла н, и ние трябва да направим 23 00:01:23,890 --> 00:01:25,950 уверете, че той е бил успешно отворен. 24 00:01:25,950 --> 00:01:28,630 Ако не го направи, това ще върне нулев. 25 00:01:28,630 --> 00:01:30,390 Отиваме, за да отворите файла от. 26 00:01:30,390 --> 00:01:33,420 И отново, ние искаме да се провери, за да се направи уверете, че е открита успешно. 27 00:01:33,420 --> 00:01:37,270 И ако това не е успешно се отвори, след това ние също трябва да бъдат сигурни, за да затворите 28 00:01:37,270 --> 00:01:40,870 н файла, който първоначално успешно отвори, или иначе ние имаме 29 00:01:40,870 --> 00:01:42,600 памет течове. 30 00:01:42,600 --> 00:01:46,350 >> Така че сега ние ще прочетете в растерна графика заглавния файл и растерна информация 31 00:01:46,350 --> 00:01:48,890 заглавна от п файл. 32 00:01:48,890 --> 00:01:52,360 Отиваме да се уверите, че п файл е валиден растерна графика. 33 00:01:52,360 --> 00:01:52,640 OK. 34 00:01:52,640 --> 00:01:55,100 >> Така че сега ние ще започнем направи няколко промени. 35 00:01:55,100 --> 00:01:58,840 Така че, тъй като ние ще трябва да се променя неща, ние първо искат да си спомнят за 36 00:01:58,840 --> 00:02:01,510 стар широчина на п файла. 37 00:02:01,510 --> 00:02:05,160 Ние искаме да си спомня стария подплънката на н файл, използвайки същите изчисления 38 00:02:05,160 --> 00:02:06,990 от copy.c. 39 00:02:06,990 --> 00:02:09,840 >> А сега отиваме да се промени на растерна информация заглавната си част. 40 00:02:09,840 --> 00:02:13,630 И така, ние сме се умножи както ширината , а височината от фактор, тъй като 41 00:02:13,630 --> 00:02:15,750 това е, което ние сме мащабиране чрез. 42 00:02:15,750 --> 00:02:18,420 Отиваме да се определи нова подложка на файла с 43 00:02:18,420 --> 00:02:21,140 като се използва нов измерването. 44 00:02:21,140 --> 00:02:27,330 И ние ще определи новите размер на изображението с помощта на броя на 45 00:02:27,330 --> 00:02:31,610 байта в един ред, който ще е броят на пикселите в този ред 46 00:02:31,610 --> 00:02:35,960 пъти размера на един пиксел плюс брой на байтовете на подложка в края 47 00:02:35,960 --> 00:02:40,310 на този ред, и се умножи всичко, което от броя на редовете, които имаме. 48 00:02:40,310 --> 00:02:43,800 Така че това е броя на байтовете имаме в нашите данни с изображения. 49 00:02:43,800 --> 00:02:48,190 >> Bf.Bfsize сега ще бъде броят байтове в нашия имидж бета плюс 50 00:02:48,190 --> 00:02:49,350 размера на нашите заглавки. 51 00:02:49,350 --> 00:02:53,910 Така че, плюс размера на растерна графика заглавния файл и размер на растерна информация Header. 52 00:02:53,910 --> 00:02:54,510 OK. 53 00:02:54,510 --> 00:02:56,440 Така че това е за нашите заглавки. 54 00:02:56,440 --> 00:02:59,030 Можем да напишем файл глава и информация Header да ни навън 55 00:02:59,030 --> 00:03:01,590 Файл, а ние сме добри. 56 00:03:01,590 --> 00:03:03,800 >> Сега е време да започнете действително писането на пиксел 57 00:03:03,800 --> 00:03:05,120 данни на вън файл. 58 00:03:05,120 --> 00:03:10,460 Отиваме да обяви буфер с размер старата ширина RGB утроява, и ние сме 59 00:03:10,460 --> 00:03:13,790 ще декларира променлива наречена ред вцепенен, което е, че ще 60 00:03:13,790 --> 00:03:15,640 първоначално определения равна на отрицателен 1. 61 00:03:15,640 --> 00:03:19,090 Ще видите, че ние ще се използва че за да се следи за това, което 62 00:03:19,090 --> 00:03:22,640 ред ние в момента са натоварени в този буфер. 63 00:03:22,640 --> 00:03:23,290 OK. 64 00:03:23,290 --> 00:03:28,750 >> Така че сега, за разлика от стандартната версия, вместо итерации над в в 65 00:03:28,750 --> 00:03:32,900 файл, ние ще обхождане на всеки ред в извън файл и да разбера 66 00:03:32,900 --> 00:03:38,130 кой ред в в досието, което искаме да място в този ред в извън файла. 67 00:03:38,130 --> 00:03:44,930 Така итерации през всички редове в изчакване файл с помощта на нова височина, ние сме първи 68 00:03:44,930 --> 00:03:48,890 ще определи реда в старата подаде ние започваш да се използва, които сме 69 00:03:48,890 --> 00:03:53,560 ще направя, като този ток ред разделена на фактор. 70 00:03:53,560 --> 00:03:58,000 Така че това ще ни даде ред в стария файл, който искаме. 71 00:03:58,000 --> 00:04:03,310 >> Така че сега, ако ред вцепенен не е равно на стария г, ние ще трябва да прочетете ред 72 00:04:03,310 --> 00:04:05,940 че искаме в нашия тек ред буфер. 73 00:04:05,940 --> 00:04:07,700 Така че как ще го направиш? 74 00:04:07,700 --> 00:04:11,650 Първо, ние отиваме да разбера позиция, която започва, че ред в 75 00:04:11,650 --> 00:04:13,100 оригиналния файл. 76 00:04:13,100 --> 00:04:18,630 Така че тази позиция ще бъде покрай всички наши заглавията и 77 00:04:18,630 --> 00:04:21,589 сега последните старите у редовете. 78 00:04:21,589 --> 00:04:23,880 >> И така, колко байта са в един ред? 79 00:04:23,880 --> 00:04:28,740 Отново, размер на RGB тройни пъти стар ширина плюс старата подложка, така че е най- 80 00:04:28,740 --> 00:04:30,640 брой байтове в един ред. 81 00:04:30,640 --> 00:04:33,680 И ние искаме да пропуснете последните старите у редовете. 82 00:04:33,680 --> 00:04:37,580 Така че ние отиваме да е търсим и ние сме използвайки търсят комплект да се започне от 83 00:04:37,580 --> 00:04:39,100 началото на файла. 84 00:04:39,100 --> 00:04:42,740 Ще се стремим да е тази позиция във файла, поставяйки ни в 85 00:04:42,740 --> 00:04:46,500 началото на реда, което искаме да прочетете в нашия буфер. 86 00:04:46,500 --> 00:04:48,510 >> Отиваме да се създаде ред вцепенен равна на старата база. 87 00:04:48,510 --> 00:04:53,080 Така че сега, ако ние контур обратно и искаме да използвате същия този ред в нашата навън файл, 88 00:04:53,080 --> 00:04:55,970 тогава ние няма да се чете тя отново ненужно. 89 00:04:55,970 --> 00:04:59,310 Така че наистина, ред е вцепенен просто оптимизация. 90 00:04:59,310 --> 00:05:05,500 >> И накрая, ние отиваме да прочетете в на текущия ред старата ширина RGB утроява 91 00:05:05,500 --> 00:05:08,040 че искаме от оригиналния файл. 92 00:05:08,040 --> 00:05:12,270 Така че сега тек ред съдържа пикселите от оригиналния файл, че ние искаме да 93 00:05:12,270 --> 00:05:14,200 напиши в извън файла. 94 00:05:14,200 --> 00:05:18,960 Така че сега, точно както по-горе, вместо итерации върху стария файл, ние трябва 95 00:05:18,960 --> 00:05:22,560 да обхождане на новите файлове редовете. 96 00:05:22,560 --> 00:05:27,450 Ами тук, вместо на итерации над всички на старите пикселите, че в тек ред, 97 00:05:27,450 --> 00:05:31,210 ние искаме да превъртите по цялата пиксели в нашия нов файл в тази 98 00:05:31,210 --> 00:05:32,480 специално ред. 99 00:05:32,480 --> 00:05:34,140 >> Защо искате да направите това? 100 00:05:34,140 --> 00:05:38,960 Защото ние виждаме тук, че ние не сме всъщност използва непременно всички изброени 101 00:05:38,960 --> 00:05:41,020 пиксела в оригиналния файл. 102 00:05:41,020 --> 00:05:46,630 Защото, ако ние сме свиване, можем да всъщност искате да пропуснете пикселите. 103 00:05:46,630 --> 00:05:48,090 И ние виждаме, че това - 104 00:05:48,090 --> 00:05:49,690 х разделено фактор - 105 00:05:49,690 --> 00:05:55,620 отразява до голяма степен до тук, където ние казваме г. разделена на фактор, за да разбера, че 106 00:05:55,620 --> 00:06:02,480 стария у-тия ред съответства у-я ред в този нов файл. 107 00:06:02,480 --> 00:06:05,880 >> Сега отиваме да пишат всички тези пиксели от стария ред 108 00:06:05,880 --> 00:06:07,440 в нашия нов ред. 109 00:06:07,440 --> 00:06:10,890 След като сме направили това, трябва просто да постави подложка в края на нашия ред 110 00:06:10,890 --> 00:06:15,540 И ние ще контур обратно и да продължи всички редове в нашия нов файл. 111 00:06:15,540 --> 00:06:19,390 В края на краищата, ние трябва да се закрие старата ни подаде, затворете нашия нов файл, и връщане 112 00:06:19,390 --> 00:06:21,540 нула, защото всичко мина добре. 113 00:06:21,540 --> 00:06:24,220 >> Моето име е Роб и това беше във ваканция. 114 00:06:24,220 --> 00:06:29,184 >> [За възпроизвеждане на музика]