1 00:00:00,000 --> 00:00:00,996 2 00:00:00,996 --> 00:00:12,470 >> [MUZYKA GRA] 3 00:00:12,470 --> 00:00:13,210 >> ROB BOWDEN Cześć. 4 00:00:13,210 --> 00:00:16,870 Jestem Rob i niech rozmiar się tym problemem. 5 00:00:16,870 --> 00:00:20,990 Więc mamy zamiar rozpocząć copy.c jako szablon, ale mamy zamiar być 6 00:00:20,990 --> 00:00:23,340 co sporo zmian. 7 00:00:23,340 --> 00:00:27,570 >> Teraz widzimy, jesteśmy natychmiast czyni zmienić, gdy już nie sprawdzamy 8 00:00:27,570 --> 00:00:31,560 na nasz RXC nie równa 3, ale teraz sprawdzamy rc nie jest równa 4. 9 00:00:31,560 --> 00:00:34,670 Ponieważ chcemy również zawierać, dodatek do w pliku oraz z plików 10 00:00:34,670 --> 00:00:39,550 argumenty, f, która będzie to czynnik, przez który mamy skalowanie. 11 00:00:39,550 --> 00:00:45,430 >> Więc kiedy już jesteśmy pewni, że chcemy użyj s skanowania f przekonwertować ciąg 12 00:00:45,430 --> 00:00:49,030 argv1 do pływaka. 13 00:00:49,030 --> 00:00:51,330 I jedziemy do przechowywania że czynnikiem. 14 00:00:51,330 --> 00:00:55,180 Ten dodatkowy znak jest upewnienie że nie są w rzeczywistości wprowadzając 15 00:00:55,180 --> 00:00:59,200 coś jak 1,4 ABC w wierszu poleceń. 16 00:00:59,200 --> 00:01:02,960 >> Teraz mamy zamiar utworzyć kilka aliasów od RV2 i nie są RV3 17 00:01:02,960 --> 00:01:04,310 bardzo pomocna nazwy. 18 00:01:04,310 --> 00:01:07,660 Mamy natomiast zamiar zadzwonić je w pliku i na pliku. 19 00:01:07,660 --> 00:01:11,580 Teraz będziemy się upewnić, że nasz był naprawdę ważny czynnik. 20 00:01:11,580 --> 00:01:16,330 Tak więc, jeśli współczynnik jest mniejszy niż lub równy zero lub większą niż 100, a następnie, jak na 21 00:01:16,330 --> 00:01:19,660 spec, powinniśmy odrzucić że czynnikiem. 22 00:01:19,660 --> 00:01:23,890 >> Kiedy jesteśmy pewni, że to dobrze, teraz możemy otwórz plik n, a my musimy zrobić 23 00:01:23,890 --> 00:01:25,950 pewność, że został z powodzeniem otwarty. 24 00:01:25,950 --> 00:01:28,630 Jeśli tak się nie stało, że zwróci wartość null. 25 00:01:28,630 --> 00:01:30,390 Zamierzamy otworzyć plik out. 26 00:01:30,390 --> 00:01:33,420 I znowu, chcemy sprawdzić, pewien, że pomyślnie otwarty. 27 00:01:33,420 --> 00:01:37,270 A jeśli to nie z powodzeniem otworzyć, a następnie musimy także być zamknięta 28 00:01:37,270 --> 00:01:40,870 Plik n, które pierwotnie powodzeniem otwarte, albo mamy 29 00:01:40,870 --> 00:01:42,600 wyciek pamięci. 30 00:01:42,600 --> 00:01:46,350 >> Więc teraz mamy zamiar przeczytać w mapie bitowej Nagłówek pliku bitmapy info 31 00:01:46,350 --> 00:01:48,890 nagłówek z pliku n. 32 00:01:48,890 --> 00:01:52,360 Jedziemy, aby upewnić się, że n był poprawny plik mapy bitowej. 33 00:01:52,360 --> 00:01:52,640 OK. 34 00:01:52,640 --> 00:01:55,100 >> Więc teraz mamy zamiar rozpocząć wprowadzenie pewnych zmian. 35 00:01:55,100 --> 00:01:58,840 Tak, ponieważ mamy zamiar się zmienić rzeczy, najpierw chcę pamiętać 36 00:01:58,840 --> 00:02:01,510 stary szerokość pliku n. 37 00:02:01,510 --> 00:02:05,160 Chcemy pamiętać starą dopełnienie Plik n stosując te same obliczenia 38 00:02:05,160 --> 00:02:06,990 z copy.c. 39 00:02:06,990 --> 00:02:09,840 >> A teraz mamy zamiar zmienić Informacje bitmapy nagłówka. 40 00:02:09,840 --> 00:02:13,630 I tak jesteśmy pomnożenie zarówno szerokość i wzrost o współczynnik od 41 00:02:13,630 --> 00:02:15,750 że to, co mamy skalowanie przez. 42 00:02:15,750 --> 00:02:18,420 Jedziemy do określenia Wyściółka z nowego pliku przez 43 00:02:18,420 --> 00:02:21,140 za pomocą nowej szerokości. 44 00:02:21,140 --> 00:02:27,330 I zamierzamy ustalić nowy rozmiar obrazu za pomocą liczby 45 00:02:27,330 --> 00:02:31,610 bajtów w jednym rzędzie, które zamierza być liczba pikseli w tym wierszu 46 00:02:31,610 --> 00:02:35,960 Czasy rozmiar piksela oraz Liczba bajtów w celu wypychania 47 00:02:35,960 --> 00:02:40,310 z tego wiersza oraz że mnożenie wszystkich przez liczbę wierszy, które mamy. 48 00:02:40,310 --> 00:02:43,800 Więc to jest liczba bajtów mamy w danych obrazu. 49 00:02:43,800 --> 00:02:48,190 >> Bf.Bfsize teraz będzie numer bajtów w naszym obrazu beta Plus 50 00:02:48,190 --> 00:02:49,350 Wielkość naszych nagłówków. 51 00:02:49,350 --> 00:02:53,910 Więc plus rozmiar plików graficznych nagłówka Informacje i rozmiar bitmapy nagłówka. 52 00:02:53,910 --> 00:02:54,510 OK. 53 00:02:54,510 --> 00:02:56,440 Tak, to jest to dla naszych nagłówków. 54 00:02:56,440 --> 00:02:59,030 Możemy zapisać plik i głowę Informacje nagłówka do naszego wyjazdu 55 00:02:59,030 --> 00:03:01,590 plik, a my jesteśmy dobrzy. 56 00:03:01,590 --> 00:03:03,800 >> Teraz nadszedł czas, aby rozpocząć faktycznie pisanie piksel 57 00:03:03,800 --> 00:03:05,120 danych do pliku na zewnątrz. 58 00:03:05,120 --> 00:03:10,460 Mamy zamiar zadeklarować bufor wielkości stary szerokość RGB trzyosobowe, a my 59 00:03:10,460 --> 00:03:13,790 zamiar zadeklarować zmienną wiersz zdrętwiałe, który jest zamierzamy 60 00:03:13,790 --> 00:03:15,640 początkowo równy negatywnej 1. 61 00:03:15,640 --> 00:03:19,090 Zobaczymy, że będziemy używać że aby śledzić, co 62 00:03:19,090 --> 00:03:22,640 rząd obecnie załadowany w tym buforze. 63 00:03:22,640 --> 00:03:23,290 OK. 64 00:03:23,290 --> 00:03:28,750 >> Więc teraz w przeciwieństwie do standardowej wersji, zamiast iterowanie na in 65 00:03:28,750 --> 00:03:32,900 plik, idziemy do iteracyjne nad każdym wiersz w pliku out i dowiedzieć się, 66 00:03:32,900 --> 00:03:38,130 który wiersz w pliku w chcemy umieść w tym wierszu w pliku zewnątrz. 67 00:03:38,130 --> 00:03:44,930 Więc iterowanie wszystkie wiersze w out plików przy użyciu nowego wysokość, jesteśmy pierwszy 68 00:03:44,930 --> 00:03:48,890 zamiar określenia wiersz stary plik będziemy korzystać, których jesteśmy 69 00:03:48,890 --> 00:03:53,560 zrobić poprzez ten prąd wiersz podzielony przez współczynnik. 70 00:03:53,560 --> 00:03:58,000 Tak, że będzie nam wiersz w starym pliku, który chcemy. 71 00:03:58,000 --> 00:04:03,310 >> Więc teraz, jeśli rząd zdrętwiałe nie równa stare r, mamy zamiar przeczytać wiersz 72 00:04:03,310 --> 00:04:05,940 że chcemy do naszego bufora wiersza Wal. 73 00:04:05,940 --> 00:04:07,700 Więc jak mamy to zrobić? 74 00:04:07,700 --> 00:04:11,650 Po pierwsze, mamy zamiar dowiedzieć się, Stanowisko, że zaczyna ten wiersz w 75 00:04:11,650 --> 00:04:13,100 oryginalny plik. 76 00:04:13,100 --> 00:04:18,630 Tak, że pozycja będzie przeszłość wszystkich naszych nagłówków i 77 00:04:18,630 --> 00:04:21,589 teraz stare stare r wierszy. 78 00:04:21,589 --> 00:04:23,880 >> I tak jak wiele bajtów są w jednym wierszu? 79 00:04:23,880 --> 00:04:28,740 Ponownie, wielkość potrójnie razy stary RGB szerokość oraz stare wypełnienie, więc to 80 00:04:28,740 --> 00:04:30,640 liczba bajtów w jednym rzędzie. 81 00:04:30,640 --> 00:04:33,680 I chcemy Pomiń starych y wierszy. 82 00:04:33,680 --> 00:04:37,580 Więc idziemy do f szukać i jesteśmy używając szukać zestaw zacząć od 83 00:04:37,580 --> 00:04:39,100 na początku pliku. 84 00:04:39,100 --> 00:04:42,740 Jedziemy do f dążyć do tej pozycji w pliku, stawiając nas na 85 00:04:42,740 --> 00:04:46,500 początku wiersza chcemy przeczytać w naszym buforze. 86 00:04:46,500 --> 00:04:48,510 >> Zamierzamy ustawić wiersz zdrętwiałe równa starej y. 87 00:04:48,510 --> 00:04:53,080 Więc teraz, jeśli pętla z powrotem, a my chcemy używać tego samego wiersza w naszym archiwum na zewnątrz, 88 00:04:53,080 --> 00:04:55,970 wtedy nie będziemy czytać to ponownie niepotrzebnie. 89 00:04:55,970 --> 00:04:59,310 Tak naprawdę, to rząd zdrętwiałe tylko optymalizacja. 90 00:04:59,310 --> 00:05:05,500 >> Wreszcie będziemy czytać w obecny rząd stara szerokość RGB potraja 91 00:05:05,500 --> 00:05:08,040 że chcemy z oryginalnego pliku. 92 00:05:08,040 --> 00:05:12,270 Więc teraz bież wiersz zawiera piksele z oryginalny plik, który chcemy 93 00:05:12,270 --> 00:05:14,200 Napisać do pliku na zewnątrz. 94 00:05:14,200 --> 00:05:18,960 Więc teraz, tak jak wyżej, zamiast iterowanie starego pliku, musimy 95 00:05:18,960 --> 00:05:22,560 to w celu przechodzenia do nowych plików wierszy. 96 00:05:22,560 --> 00:05:27,450 Więc tutaj, zamiast iteracji nad wszystkim starych pikseli, które w cur rzędu, 97 00:05:27,450 --> 00:05:31,210 chcemy iteracyjne nad wszystkie pikseli w naszym nowym pliku w tym 98 00:05:31,210 --> 00:05:32,480 szczególności rząd. 99 00:05:32,480 --> 00:05:34,140 >> Dlaczego chcesz to zrobić? 100 00:05:34,140 --> 00:05:38,960 Ponieważ widzimy, że nie jesteśmy faktycznie musi korzystać z wszystkich 101 00:05:38,960 --> 00:05:41,020 pikseli w oryginalnym pliku. 102 00:05:41,020 --> 00:05:46,630 Bo jeśli jesteśmy kurczy, możemy rzeczywiście chcesz pominąć pikseli. 103 00:05:46,630 --> 00:05:48,090 I widzimy, że ta - 104 00:05:48,090 --> 00:05:49,690 x dzieli się przez współczynnik - 105 00:05:49,690 --> 00:05:55,620 ściśle odzwierciedla się tu, gdzie mówimy y podzielić przez współczynnik, aby dowiedzieć się, że 106 00:05:55,620 --> 00:06:02,480 Stare r-ty wiersz odpowiada r-ty wiersz w tym nowym pliku. 107 00:06:02,480 --> 00:06:05,880 >> Teraz mamy zamiar napisać wszystko te pikseli od starego rzędu 108 00:06:05,880 --> 00:06:07,440 do naszego nowego wiersza. 109 00:06:07,440 --> 00:06:10,890 Kiedy już to zrobisz, musimy po prostu umieścić wyściółkę pod koniec naszego rzędu 110 00:06:10,890 --> 00:06:15,540 a my pętlę z powrotem i kontynuować przez wszystkie wiersze w naszym nowym pliku. 111 00:06:15,540 --> 00:06:19,390 Na koniec, musimy zamknąć nasz stary złożyć, zamknąć nasz nowy plik, a zwrot 112 00:06:19,390 --> 00:06:21,540 zerowy, ponieważ wszystko poszło dobrze. 113 00:06:21,540 --> 00:06:24,220 >> Nazywam się Rob i to było zagłębienie. 114 00:06:24,220 --> 00:06:29,184 >> [MUZYKA GRA]