1 00:00:00,000 --> 00:00:12,240 >> [Музыка гуляе] 2 00:00:12,240 --> 00:00:15,870 >> ROB Боуден: Прывітанне, я Роб, давайце паспрабуйце гэта на памер. 3 00:00:15,870 --> 00:00:21,100 Такім чынам, мы зноў пачнем з у асноўным копія copy.c і 4 00:00:21,100 --> 00:00:22,860 зрабіць некалькі змен. 5 00:00:22,860 --> 00:00:26,280 Заўвага адразу мы бачым змены, дзе замест праверкі, каб пераканацца, 6 00:00:26,280 --> 00:00:30,440 агдс не роўныя 3, мы хочам праверыць калі агдс ня роўнае 4, так як 7 00:00:30,440 --> 00:00:34,350 цяпер мы не проста прымаць у INFILE і выхадны файл, але мы таксама прымаючы пад 8 00:00:34,350 --> 00:00:38,980 п, што гэта сума, якую мы маштабаванне зыходны малюнак на. 9 00:00:38,980 --> 00:00:44,340 Як толькі мы ў гэтым упэўнены, мы можам проста канвертаваць п да цэлага ліку, выкарыстоўваючы atoi. 10 00:00:44,340 --> 00:00:48,760 >> Такім чынам, зараз мы збіраемся стварыць некаторыя псеўданімы, проста патэлефануеце агду 2 INFILE, і 11 00:00:48,760 --> 00:00:54,240 агду 3 выходной_файл, таму агду 2 і агду 3 не вельмі карысным імёны. 12 00:00:54,240 --> 00:00:58,510 Цяпер мы хочам праверыць, каб пераканацца, п ў межах мы чакаем, так 13 00:00:58,510 --> 00:01:02,910 спец паказвае, што, калі гэта менш або роўныя нулю, або больш, чым 100, 14 00:01:02,910 --> 00:01:08,580 то гэта інвалід фактарам змены памеру, і мы павінны папярэдзіць карыстальніка аб тым, што. 15 00:01:08,580 --> 00:01:13,090 >> Пасля таго, як мы за ўсё гэта, мы можам нарэшце, адкрыць наш INFILE, і мы павінны 16 00:01:13,090 --> 00:01:16,270 да памылак праверыць, каб пераканацца, што Адкрыццё не прамінуў па некаторых прычынах. 17 00:01:16,270 --> 00:01:19,860 Мы таксама павінны адкрыць наш OUTFILE, і зноў памылка праверыць, каб пераканацца, што 18 00:01:19,860 --> 00:01:21,250 не прамінуў па некаторых прычынах. 19 00:01:21,250 --> 00:01:26,270 Але будзьце ўпэўненыя, калі адкрыццё выходной_файл атрымалася, што мы павінны закрыць 20 00:01:26,270 --> 00:01:29,040 входной_файл, які быў ужо адкрыты. 21 00:01:29,040 --> 00:01:33,690 >> Так, калі выказаць здагадку, што не прамінуў, то we're - гэтак жа, як у copy.c-- 22 00:01:33,690 --> 00:01:36,140 будзе чытаць ў загалоўку ад INFILE. 23 00:01:36,140 --> 00:01:40,130 Мы збіраемся, каб пераканацца, што гэта дзейнічае растравыя, але зараз мы збіраемся зрабіць некаторыя 24 00:01:40,130 --> 00:01:41,620 рэчы крыху па-іншаму. 25 00:01:41,620 --> 00:01:44,870 Такім чынам, спачатку мы збіраемся хочаце памятаць арыгінальны шырыню і вышыню 26 00:01:44,870 --> 00:01:48,290 з INFILE, таму што мы збіраемся змяняецца яго для OUTFILE. 27 00:01:48,290 --> 00:01:53,890 Так што цяпер, памятаеце, што для дзіўных прычын bi.biheight, мае адмоўнае значэнне, і 28 00:01:53,890 --> 00:01:58,670 таму фактычная вышыня, на станоўчы, мы хачу ўзяць абсалютная значэнне. 29 00:01:58,670 --> 00:02:02,580 >> Цяпер, пракладка будзе тое ж самае Разлік, як гэта было ў copy.c, 30 00:02:02,580 --> 00:02:06,060 выкарыстоўваючы стары шырыню, і зараз мы на самай справе адбываецца, каб змяніць 31 00:02:06,060 --> 00:02:07,320 Што ў нашым загалоўку. 32 00:02:07,320 --> 00:02:11,200 Так што мы збіраемся, каб памножыць нашу шырыню п, так як мы маштабавання шырыню 33 00:02:11,200 --> 00:02:15,100 п, памножыць вышыню на п, так як мы маштабавання на п, і цяпер у нас ёсць 34 00:02:15,100 --> 00:02:19,250 разлік для новага запаўнення на аснове новай шырыні. 35 00:02:19,250 --> 00:02:21,840 >> Так што цяпер мы павінны змяніць некаторыя Іншыя поля ў нашай загалоўку. 36 00:02:21,840 --> 00:02:26,890 Bi.biSizeImage, як мяркуецца, памер усіх байтаў ў пікселях 37 00:02:26,890 --> 00:02:28,520 і абіўка малюнка. 38 00:02:28,520 --> 00:02:34,190 І такім чынам, памер аднаго радка нашай малюнак памер RGB патройны, памер 39 00:02:34,190 --> 00:02:39,430 з аднаго пікселя, раз лік пікселяў ў радку, плюс абіўка ў 40 00:02:39,430 --> 00:02:40,910 канец радка. 41 00:02:40,910 --> 00:02:45,200 А потым мы збіраемся памножце гэта на абсалютная значэнне нашай вышыні, каб атрымаць 42 00:02:45,200 --> 00:02:48,350 Агульная колькасць байтаў ў дадзеных выявы. 43 00:02:48,350 --> 00:02:53,050 bf.bfSize проста агульная колькасць байтаў ў нашых дадзеных выявы, таму 44 00:02:53,050 --> 00:02:56,530 bi.biSizeImage, плюс Памер нашых загалоўкаў. 45 00:02:56,530 --> 00:02:59,850 Такім чынам, даданне ад памеру графічнага файла загаловак, і памер растравага інфармацыя 46 00:02:59,850 --> 00:03:00,800 загаловак, ОК. 47 00:03:00,800 --> 00:03:03,170 Так вось усё, што трэба змяніць у нашых загалоўкаў. 48 00:03:03,170 --> 00:03:07,020 Цяпер мы напішам загаловак растравы файл у наш выхадны файл, і нашай інфармацыі растравага 49 00:03:07,020 --> 00:03:09,880 загаловак да нашай OUTFILE, і цяпер мы гатовыя пачаць рухацца 50 00:03:09,880 --> 00:03:11,990 па-над фактычных пікселях. 51 00:03:11,990 --> 00:03:15,720 >> Таму мы хочам, каб перабраць радкоў разгорткі ў INFILE ст. 52 00:03:15,720 --> 00:03:17,730 Таму мы хочам, каб перабраць oldheight. 53 00:03:17,730 --> 00:03:20,830 Вось чаму мы павінны памятаць, Першапачатковая вышыня, перш чым мы яго змяніць 54 00:03:20,830 --> 00:03:23,040 і маштабаваць яго на п. 55 00:03:23,040 --> 00:03:27,810 Цяпер мы збіраемся, каб прачытаць адзін радок INFILE ў 56 00:03:27,810 --> 00:03:30,630 буфер памерам oldwidth. 57 00:03:30,630 --> 00:03:36,190 Дык вось, мы freading памер RGB патройны, адзін піксель, і стары шырыня 58 00:03:36,190 --> 00:03:39,760 ім з INFILE ў нашай буфера. 59 00:03:39,760 --> 00:03:43,480 І гэта будзе цэлая веславаць у гэтым масіве. 60 00:03:43,480 --> 00:03:50,390 Так што цяпер, мы хочам перабраць п раз, каб раздрукаваць гэты радок у наш выхадны файл п раз. 61 00:03:50,390 --> 00:03:52,510 І так гэта тое, што гэты цыкл робіць. 62 00:03:52,510 --> 00:03:57,910 Гэта ўнутраны цыкл ітэрацыі веславаць сябе, па масіве, друку 63 00:03:57,910 --> 00:04:00,710 кожны піксель ў масіве п раз. 64 00:04:00,710 --> 00:04:04,510 Такім чынам, нулявая элемент друкуецца п раз, першы элемент у цяперашні час 65 00:04:04,510 --> 00:04:05,660 надрукаваныя п раз. 66 00:04:05,660 --> 00:04:10,820 І гэта свайго роду як мы збіраемся гарызантальна маштабаваць ў выходны файл, і 67 00:04:10,820 --> 00:04:13,390 гэты цыкл, так як мы прабягаем п раз, то, як мы збіраемся 68 00:04:13,390 --> 00:04:15,580 вертыкальна маштаб. 69 00:04:15,580 --> 00:04:19,850 >> Тут, унізе, мы бачым, што нам трэба дадаць запаўненне ў канцы кожнага радка. 70 00:04:19,850 --> 00:04:25,050 Вось чаму гэта ўнутры для завесы які Раздрукаваўшы п радкоў проста 71 00:04:25,050 --> 00:04:28,400 гэта адна радок з INFILE. 72 00:04:28,400 --> 00:04:32,150 Тады тут, я збіраюся прапусціць абіўка ў INFILE, паколькі пасля 73 00:04:32,150 --> 00:04:34,560 мы скончылі з адным побач входной_файл, мы не клапоцімся пра 74 00:04:34,560 --> 00:04:35,290 што абіўка была. 75 00:04:35,290 --> 00:04:37,110 Мы проста хочам, каб дабрацца да другога радка. 76 00:04:37,110 --> 00:04:40,870 А потым мы будзем пятля назад і зрабіць усё гэта зноў для другога шэрагу. 77 00:04:40,870 --> 00:04:44,406 >> Нарэшце, калі мы скончым з усім, што, мы можам закрыць INFILE, недалёка 78 00:04:44,406 --> 00:04:47,430 выходной_файл, і вяртанне 0, таму што мы зрабілі. 79 00:04:47,430 --> 00:04:50,330 >> Мяне клічуць Боб, і гэта было змяненне памеру. 80 00:04:50,330 --> 00:04:54,934 >> [Музыка гуляе]