[MUZYKA GRA] ROB BOWDEN Cześć. Jestem Rob i niech rozmiar się tym problemem. Więc mamy zamiar rozpocząć copy.c jako szablon, ale mamy zamiar być co sporo zmian. Teraz widzimy, jesteśmy natychmiast czyni zmienić, gdy już nie sprawdzamy na nasz RXC nie równa 3, ale teraz sprawdzamy rc nie jest równa 4. Ponieważ chcemy również zawierać, dodatek do w pliku oraz z plików argumenty, f, która będzie to czynnik, przez który mamy skalowanie. Więc kiedy już jesteśmy pewni, że chcemy użyj s skanowania f przekonwertować ciąg argv1 do pływaka. I jedziemy do przechowywania że czynnikiem. Ten dodatkowy znak jest upewnienie że nie są w rzeczywistości wprowadzając coś jak 1,4 ABC w wierszu poleceń. Teraz mamy zamiar utworzyć kilka aliasów od RV2 i nie są RV3 bardzo pomocna nazwy. Mamy natomiast zamiar zadzwonić je w pliku i na pliku. Teraz będziemy się upewnić, że nasz był naprawdę ważny czynnik. Tak więc, jeśli współczynnik jest mniejszy niż lub równy zero lub większą niż 100, a następnie, jak na spec, powinniśmy odrzucić że czynnikiem. Kiedy jesteśmy pewni, że to dobrze, teraz możemy otwórz plik n, a my musimy zrobić pewność, że został z powodzeniem otwarty. Jeśli tak się nie stało, że zwróci wartość null. Zamierzamy otworzyć plik out. I znowu, chcemy sprawdzić, pewien, że pomyślnie otwarty. A jeśli to nie z powodzeniem otworzyć, a następnie musimy także być zamknięta Plik n, które pierwotnie powodzeniem otwarte, albo mamy wyciek pamięci. Więc teraz mamy zamiar przeczytać w mapie bitowej Nagłówek pliku bitmapy info nagłówek z pliku n. Jedziemy, aby upewnić się, że n był poprawny plik mapy bitowej. OK. Więc teraz mamy zamiar rozpocząć wprowadzenie pewnych zmian. Tak, ponieważ mamy zamiar się zmienić rzeczy, najpierw chcę pamiętać stary szerokość pliku n. Chcemy pamiętać starą dopełnienie Plik n stosując te same obliczenia z copy.c. A teraz mamy zamiar zmienić Informacje bitmapy nagłówka. I tak jesteśmy pomnożenie zarówno szerokość i wzrost o współczynnik od że to, co mamy skalowanie przez. Jedziemy do określenia Wyściółka z nowego pliku przez za pomocą nowej szerokości. I zamierzamy ustalić nowy rozmiar obrazu za pomocą liczby bajtów w jednym rzędzie, które zamierza być liczba pikseli w tym wierszu Czasy rozmiar piksela oraz Liczba bajtów w celu wypychania z tego wiersza oraz że mnożenie wszystkich przez liczbę wierszy, które mamy. Więc to jest liczba bajtów mamy w danych obrazu. Bf.Bfsize teraz będzie numer bajtów w naszym obrazu beta Plus Wielkość naszych nagłówków. Więc plus rozmiar plików graficznych nagłówka Informacje i rozmiar bitmapy nagłówka. OK. Tak, to jest to dla naszych nagłówków. Możemy zapisać plik i głowę Informacje nagłówka do naszego wyjazdu plik, a my jesteśmy dobrzy. Teraz nadszedł czas, aby rozpocząć faktycznie pisanie piksel danych do pliku na zewnątrz. Mamy zamiar zadeklarować bufor wielkości stary szerokość RGB trzyosobowe, a my zamiar zadeklarować zmienną wiersz zdrętwiałe, który jest zamierzamy początkowo równy negatywnej 1. Zobaczymy, że będziemy używać że aby śledzić, co rząd obecnie załadowany w tym buforze. OK. Więc teraz w przeciwieństwie do standardowej wersji, zamiast iterowanie na in plik, idziemy do iteracyjne nad każdym wiersz w pliku out i dowiedzieć się, który wiersz w pliku w chcemy umieść w tym wierszu w pliku zewnątrz. Więc iterowanie wszystkie wiersze w out plików przy użyciu nowego wysokość, jesteśmy pierwszy zamiar określenia wiersz stary plik będziemy korzystać, których jesteśmy zrobić poprzez ten prąd wiersz podzielony przez współczynnik. Tak, że będzie nam wiersz w starym pliku, który chcemy. Więc teraz, jeśli rząd zdrętwiałe nie równa stare r, mamy zamiar przeczytać wiersz że chcemy do naszego bufora wiersza Wal. Więc jak mamy to zrobić? Po pierwsze, mamy zamiar dowiedzieć się, Stanowisko, że zaczyna ten wiersz w oryginalny plik. Tak, że pozycja będzie przeszłość wszystkich naszych nagłówków i teraz stare stare r wierszy. I tak jak wiele bajtów są w jednym wierszu? Ponownie, wielkość potrójnie razy stary RGB szerokość oraz stare wypełnienie, więc to liczba bajtów w jednym rzędzie. I chcemy Pomiń starych y wierszy. Więc idziemy do f szukać i jesteśmy używając szukać zestaw zacząć od na początku pliku. Jedziemy do f dążyć do tej pozycji w pliku, stawiając nas na początku wiersza chcemy przeczytać w naszym buforze. Zamierzamy ustawić wiersz zdrętwiałe równa starej y. Więc teraz, jeśli pętla z powrotem, a my chcemy używać tego samego wiersza w naszym archiwum na zewnątrz, wtedy nie będziemy czytać to ponownie niepotrzebnie. Tak naprawdę, to rząd zdrętwiałe tylko optymalizacja. Wreszcie będziemy czytać w obecny rząd stara szerokość RGB potraja że chcemy z oryginalnego pliku. Więc teraz bież wiersz zawiera piksele z oryginalny plik, który chcemy Napisać do pliku na zewnątrz. Więc teraz, tak jak wyżej, zamiast iterowanie starego pliku, musimy to w celu przechodzenia do nowych plików wierszy. Więc tutaj, zamiast iteracji nad wszystkim starych pikseli, które w cur rzędu, chcemy iteracyjne nad wszystkie pikseli w naszym nowym pliku w tym szczególności rząd. Dlaczego chcesz to zrobić? Ponieważ widzimy, że nie jesteśmy faktycznie musi korzystać z wszystkich pikseli w oryginalnym pliku. Bo jeśli jesteśmy kurczy, możemy rzeczywiście chcesz pominąć pikseli. I widzimy, że ta - x dzieli się przez współczynnik - ściśle odzwierciedla się tu, gdzie mówimy y podzielić przez współczynnik, aby dowiedzieć się, że Stare r-ty wiersz odpowiada r-ty wiersz w tym nowym pliku. Teraz mamy zamiar napisać wszystko te pikseli od starego rzędu do naszego nowego wiersza. Kiedy już to zrobisz, musimy po prostu umieścić wyściółkę pod koniec naszego rzędu a my pętlę z powrotem i kontynuować przez wszystkie wiersze w naszym nowym pliku. Na koniec, musimy zamknąć nasz stary złożyć, zamknąć nasz nowy plik, a zwrot zerowy, ponieważ wszystko poszło dobrze. Nazywam się Rob i to było zagłębienie. [MUZYKA GRA]