[MUZYKA GRA] Rob Bowden: Cześć, jestem Rob, niech spróbuj tego na rozmiar. Więc znowu zaczynać z w zasadzie kopia copy.c i dokonać kilku zmian. Uwaga natychmiast widzimy zmiany, gdzie zamiast sprawdzając, czy argc nie równa 3, chcemy sprawdzić jeśli argc nie równa 4, od teraz nie jesteśmy po prostu biorąc w pliku wejściowego i plik_wy, ale jesteśmy także biorąc w n, które jest kwota, którą jesteśmy skalowanie obrazu oryginalnego przez. Gdy już jesteśmy pewni, że możemy po prostu przekonwertować na liczbę całkowitą n za pomocą atoi. Tak, teraz mamy zamiar stworzyć jakiś aliasy, zadzwoń argv 2 pliku wejściowego i argv 3 plik_wy, ponieważ argv 2 i argv 3 nie są bardzo pomocne nazwy. Teraz chcemy sprawdzić, czy n jest w granicach oczekiwać, aby specyfikacja określa, że ​​jeśli jest mniejsza lub zero lub większą niż 100. to jest to nieprawidłowy współczynnik zmiany rozmiaru, i powinniśmy ostrzec użytkownika o tym. Kiedy jesteś poza wszystko, co możemy w końcu otworzyć nasz plik_we i musimy błędu upewnij się, że otwarcie nie powiedzie z jakiegoś powodu. Musimy również otworzyć naszą pliku wynikowego, a ponownie błędu upewnij się, że nie nie z jakiegoś powodu. Ale pamiętaj, jeśli otwarcie plik_wy nie powiodło się, że musimy zamknąć plik_we, który został już otwarty. Tak więc, zakładając, że nie uda, to ale jesteśmy - tak jak w copy.c-- zamiar przeczytać w nagłówku z pliku wejściowego. Jedziemy, aby upewnić się, że jest to ważne bitmapy, ale teraz mamy zamiar zrobić kilka rzeczy nieco inaczej. Więc po pierwsze, będziemy chcieli pamiętam oryginalnej szerokości i wysokości z pliku wejściowego, ponieważ mamy zamiar się zmienić go na outfile. Teraz należy pamiętać, że do dziwnych powodów bi.biheight, jest ujemna, a więc rzeczywisty wzrost, w pozytywne, mamy chcesz wziąć wartość bezwzględną. Teraz wypełnienia będzie taka sama Obliczenie, jak to było w copy.c, przy użyciu starego szerokości, a teraz jesteśmy faktycznie się zmieni to, co jest w naszym nagłówku. Więc idziemy pomnożyć szerokość przez naszą n, ponieważ my przez skalowanie szerokości n, pomnożyć wysokość przez n, ponieważ jesteśmy skalowanie przez n, a teraz mamy obliczania nowej wyściółki oparty na nowej szerokości. Teraz musimy zmienić niektóre Pozostałe pola w naszym nagłówku. Bi.biSizeImage ma być Rozmiar wszystkich bajtów w pikselach i dopełnienie obrazu. I tak rozmiar pojedynczego wiersza z naszych Rozmiar obrazu RGB jest potrójna, rozmiar pojedynczego piksela, ilość razy pikseli z rzędu, plus wypełnienie w koniec wiersza. A następnie jedziemy do pomnożyć przez wartość bezwzględna naszej wysokości, aby uzyskać całkowitą liczbę bitów w danych obrazu. bf.bfSize jest tylko łączna liczba bajtów w naszych danych obrazu, tak bi.biSizeImage plus Wielkość naszych nagłówków. Tak więc, dodanie od wielkości bitmapy nagłówek i rozmiar mapy bitowej informacji nagłówek, OK. Więc to wszystko musimy zmiany w naszych nagłówków. Teraz piszemy nagłówek pliku bitmapy do naszego pliku wynikowego, a naszej informacji bitmapy header do naszego pliku wynikowego, a teraz jesteśmy gotowi do rozpoczęcia będzie na rzeczywistych pikseli. Więc chcemy iteracyjnego linie skanowania plik_we jest. Dlatego chcemy, aby iteracyjne nad oldheight. To dlatego musimy pamiętać, oryginalna wysokość, zanim go zmienić i skalowane go przez n. Teraz mamy zamiar przeczytać wolny wiersz pliku wejściowego do bufor o rozmiarze oldwidth. Więc tutaj mamy freading rozmiar RGB trzyosobowe, jeden piksel, a stary szerokość je z pliku wejściowego do naszego bufora. I że będzie cały wiersz w tej tablicy. Więc teraz, chcemy iteracji n razy do wydrukować ten wiersz do naszej outfile n razy. A więc to, co ta pętla robi. Ta wewnętrzna pętla jest iterowanie wiersz się, na tablicy, drukowanie każdy piksel w tablicy n razy. Więc elementem jest drukowane zerowe n razy, pierwszy element jest drukowane n razy. I to jest coś w rodzaju, jak będziemy poziomo skalowanie w outfile i pętla, ponieważ mamy do pętli n razy, to w jaki sposób mamy zamiar skala w pionie. Tutaj widzimy, że musimy dodać Wyściółka na końcu każdego rzędu. Dlatego to jest wewnątrz pętli for który jest drukowanie N wierszy tylko ten wiersz z pliku wejściowego. Potem tu, mam zamiar pominąć Wyściółka w pliku wejściowego, od razu skończymy z jednym rzędem plik_we, nie dbamy o co było wypełnienie. Chcemy tylko, aby dostać się do drugiego rzędu. A potem zawrócić i zrobić wszystko, jeszcze raz w drugim rzędzie. Wreszcie, gdy już skończysz z tym wszystkim, możemy zamknąć plik_we, blisko plik_wy i powrót 0 bo skończymy. Nazywam się Rob, i to był resize. [MUZYKA GRA]