1 00:00:00,000 --> 00:00:10,210 >> [음악 연주] 2 00:00:10,210 --> 00:00:13,320 >> ZAMYLA CHAN :하자 타격 크기 조정을 가진 것들입니다. 3 00:00:13,320 --> 00:00:17,710 크기 조정, 사용자가를 통해 전달할 것 명령 줄, 비트 맵 이미지가 4 00:00:17,710 --> 00:00:21,860 그들은 당신이 번호로 확장 할 그들은 또한에 전달하는 것이 5 00:00:21,860 --> 00:00:23,770 명령 줄에서. 6 00:00:23,770 --> 00:00:24,690 우리가 어떻게해야합니까? 7 00:00:24,690 --> 00:00:28,270 >> 음, 첫 번째 것들 먼저하자 단계로이 분해. 8 00:00:28,270 --> 00:00:31,510 당신은 INFILE을 열고 자하는거야 그들은 당신을 줄뿐만 아니라, 있음 9 00:00:31,510 --> 00:00:35,560 작성하고 OUTFILE을 열고 그 당신은 둘거야 10 00:00:35,560 --> 00:00:38,020 높은 해상도 변경 11 00:00:38,020 --> 00:00:42,050 그런 다음 크기를 조정하고,하고 있기 때문에 이 비트 맵이기 때문에, 그것은 헤더, 그래서 12 00:00:42,050 --> 00:00:46,080 당신은 또한 헤더를 업데이트 할 예정입니다 OUTFILE에 대한 정보, 13 00:00:46,080 --> 00:00:47,950 그리고 안으로 그 쓰기 14 00:00:47,950 --> 00:00:51,850 그런 다음에 읽을거야 INFILE의 주사선, 15 00:00:51,850 --> 00:00:56,890 픽셀 별 가로 크기 조정 와로 그 화소를 작성 16 00:00:56,890 --> 00:01:00,910 OUTFILE 지정 등 사용자의 규모에 의해. 17 00:01:00,910 --> 00:01:03,940 >> 당신은에 기억거야 필요에 따라 여백을 추가합니다. 18 00:01:03,940 --> 00:01:05,400 나중에에 대한 자세한. 19 00:01:05,400 --> 00:01:07,790 그리고 나서, 수직으로 크기를 조정. 20 00:01:07,790 --> 00:01:08,890 OK. 21 00:01:08,890 --> 00:01:13,280 그래서이 조금 더 될 것입니다 그것을 한 누구보다 복잡하지만, 22 00:01:13,280 --> 00:01:18,310 무엇 비슷하면 해당 copy.c는 것입니다, 또, 매우 유용. 23 00:01:18,310 --> 00:01:23,160 , copy.c 파일을 열 것을 기억 에 대한 헤더 정보를 업데이트 24 00:01:23,160 --> 00:01:28,250 OUTFILE, 다음 주사선으로 읽고, 픽셀 별, 화소마다 이벤트 25 00:01:28,250 --> 00:01:30,510 출력 파일의 스캔 라인에. 26 00:01:30,510 --> 00:01:37,040 >> 그래서 다시, 첫 번째 단계는 아마도 수도 CP, copy.c, resize.c에 수 27 00:01:37,040 --> 00:01:40,560 당신의 PSET5 디렉토리에. 28 00:01:40,560 --> 00:01:43,920 당신이 그것을 복사하기 전에,하지만 기억, 당신이 이해하고 있는지 확인하십시오 29 00:01:43,920 --> 00:01:46,600 아주 철저하게 copy.c. 30 00:01:46,600 --> 00:01:47,620 OK. 31 00:01:47,620 --> 00:01:49,880 >> 그래서 파일을 열 수 있습니다. 32 00:01:49,880 --> 00:01:50,870 당신은이 작업을 수행하는 방법을 알고있다. 33 00:01:50,870 --> 00:01:52,600 내가 당신에게 맡길거야. 34 00:01:52,600 --> 00:01:56,050 다음에, 헤더 정보를 업데이트 OUTFILE하십시오. 35 00:01:56,050 --> 00:01:59,240 우리는 새로운 비트 맵을 가지고 있기 때문에, 우리는 새로운 헤더 정보가 있습니다. 36 00:01:59,240 --> 00:02:00,970 무슨 일이 변화하는거야? 37 00:02:00,970 --> 00:02:06,000 음, 파일 크기는 바꿀 것입니다 우리는 더 많은 것을해야 할 것입니다 때문에 38 00:02:06,000 --> 00:02:07,900 이전보다 픽셀. 39 00:02:07,900 --> 00:02:11,060 이미지 크기는, 따라서,이다 한, 변경 예정 40 00:02:11,060 --> 00:02:13,050 폭과 높이. 41 00:02:13,050 --> 00:02:17,180 >> 그래서 어떤 변수들은 정확하게인가? 42 00:02:17,180 --> 00:02:20,960 글쎄, 당신은 헤더에 보면 정보, 당신이 참조 43 00:02:20,960 --> 00:02:25,640 합계를 나타냅니다 biSizeImage, 바이트 화상의 크기, 44 00:02:25,640 --> 00:02:28,340 픽셀과 패딩을 포함. 45 00:02:28,340 --> 00:02:32,520 biWidth는 화상의 폭 픽셀, 패딩 마이너스. 46 00:02:32,520 --> 00:02:35,580 biHeight에은 높이 픽셀의 이미지. 47 00:02:35,580 --> 00:02:39,200 그래서 사람들은에 포함되어 있습니다 구조체 BITMAPFILEHEADER와 48 00:02:39,200 --> 00:02:40,390 BITMAPINFOHEADER. 49 00:02:40,390 --> 00:02:45,300 당신은에 의해 어느 것이 어느 하나 말할 수 bmp.h 예정보고 50 00:02:45,300 --> 00:02:49,670 BITMAPINFOHEADER 구조체와 보는 변수가 나열되어있다. 51 00:02:49,670 --> 00:02:54,700 >> 그래서 outfiles 헤더를 업데이트 정보, 당신이 원하는거야 52 00:02:54,700 --> 00:02:57,025 의 그 값을 변경 높이와 너비. 53 00:02:57,025 --> 00:03:00,570 그러나 기회는, 당신은 몇 가지가 필요할 수 있습니다 INFILE의 헤더 정보 54 00:03:00,570 --> 00:03:03,670 나중에, 그래서 최고의 모두를 추적 할 수 있습니다. 55 00:03:03,670 --> 00:03:07,770 하지만 변수를 매우 명확하게 이름 있도록 할 실수 56 00:03:07,770 --> 00:03:12,490 잘못된 값에 쓰기 OUTFILE의 헤더. 57 00:03:12,490 --> 00:03:16,160 >> 그래서 지금의이으로 독서하자 주사선의 픽셀 단위. 58 00:03:16,160 --> 00:03:20,210 다시 말하지만, 우리는 우리의 신뢰할 수 차례거야 I / O 라이브러리 파일 및보고 59 00:03:20,210 --> 00:03:22,100 FREAD 기능. 60 00:03:22,100 --> 00:03:26,150 FREAD는 구조체에 대한 포인터를 취 그 바이트를 포함하는 것 61 00:03:26,150 --> 00:03:30,130 당신은에 읽고, 각의 크기 당신이 읽고있는 요소 - 62 00:03:30,130 --> 00:03:34,410 다시, sizeof 연산자가 유용 할 것입니다 여기에 기능의 수 63 00:03:34,410 --> 00:03:38,820 당신이다는 것을 크기, 사이즈의 요소, 그리고 마지막에 읽기,, 64 00:03:38,820 --> 00:03:41,310 inpointer 파일이 당신은 읽기입니다. 65 00:03:41,310 --> 00:03:46,770 그래서 당신은 수의 요소를 가지고있어 inpointer의 크기, 그리고 66 00:03:46,770 --> 00:03:49,040 데이터에 넣어. 67 00:03:49,040 --> 00:03:51,695 >> 지금은 수평으로 크기를 조정하는 시간이다. 68 00:03:51,695 --> 00:03:56,880 N은 각 픽셀에 대해 그 다음,이 같으면 INFILE, 우리는 그것을 쓰는거야 69 00:03:56,880 --> 00:04:00,870 두 번 OUTFILE에. 70 00:04:00,870 --> 00:04:02,210 우리는 어떻게 파일을 작성하려면 어떻게해야합니까? 71 00:04:02,210 --> 00:04:06,400 음, 우리는 fwrite는 기능이있다, 그래서 우리는 구조체 포인터를 촬영했습니다 72 00:04:06,400 --> 00:04:10,170 그것은 당신이하고있는 바이트를 포함 에서 편지를 쓰고, 그리고, 우리는에 전달 73 00:04:10,170 --> 00:04:14,430 크기, 개수 및 산출, 여기서 당신은을 쓰는 것입니다. 74 00:04:14,430 --> 00:04:19,200 다음 과정을 반복하는 것이다 루프 수있는 간단한 반복. 75 00:04:19,200 --> 00:04:21,740 >> 그러나 우리는 기억해야합니다 인치 여백을 추가하는 것 76 00:04:21,740 --> 00:04:26,040 패딩의 개념은, 물론입니다 각 픽셀은 세 바이트이지만 77 00:04:26,040 --> 00:04:28,940 각 주사선의 필수 크기 4 바이트의 배수. 78 00:04:28,940 --> 00:04:33,660 그래서 화소 수 없으면 4의 배수는, 우리는 몇 가지를 추가해야 79 00:04:33,660 --> 00:04:36,630 다만 제로 패딩입니다. 80 00:04:36,630 --> 00:04:42,130 지금, 그것을 한 사람과는 달리,와 달리 복사 한 다음 INFILE 이미지와 81 00:04:42,130 --> 00:04:44,370 OUTFILE 파일은 차이가있을 수있다 다른 패딩 그들이있어 때문에 82 00:04:44,370 --> 00:04:46,360 다른 폭. 83 00:04:46,360 --> 00:04:46,690 >> OK. 84 00:04:46,690 --> 00:04:51,050 그래서 아마 공식 것 여기에 편리. 85 00:04:51,050 --> 00:04:55,120 나는 그것을 알아내는 당신에게 남겨두고 있습니다 패딩을 작성하는 것을 당신에게, 86 00:04:55,120 --> 00:04:59,360 물론, 그냥 간단한 fputc 기능의, 문자 전달 87 00:04:59,360 --> 00:05:02,200 당신은 쓰고 싶은, 그리고 그 파일 포인터 당신 88 00:05:02,200 --> 00:05:04,280 에 기록합니다. 89 00:05:04,280 --> 00:05:08,670 그래서 지금 우리는, 수평 크기를 조정 한 것을 다음, 패딩을 사용 90 00:05:08,670 --> 00:05:12,030 당신은 당신의 파일을 이동해야한다는 것을 기억 위치 표시, 당신 때문에 91 00:05:12,030 --> 00:05:14,480 패딩에 FREAD 수 없습니다. 92 00:05:14,480 --> 00:05:18,230 그래서 당신이 있는지 확인하려면 파일 INFILE의 위치 표시 93 00:05:18,230 --> 00:05:19,980 정확한 지점에 있습니다. 94 00:05:19,980 --> 00:05:23,970 우리는 또한 원하기 때문에 세로로 크기를 조정합니다. 95 00:05:23,970 --> 00:05:27,090 우리는 단지, 수평으로 늘릴 수 없습니다 모든 행이 필요하기 때문에 96 00:05:27,090 --> 00:05:30,370 N 번 복사 할 수 있습니다. 97 00:05:30,370 --> 00:05:33,050 >> 이제 다른 여러 가지가 있습니다 이 작업을 수행하는 방법. 98 00:05:33,050 --> 00:05:39,010 그래서 하나, 우리는에, 재 작성 방법을 사용할 수 있습니다 우리는 모든 화소를 기억해 99 00:05:39,010 --> 00:05:42,840 주어진 배열의 행 및 우리는 그 배열을 쓰기 100 00:05:42,840 --> 00:05:44,730 여러 번 필요에 따라. 101 00:05:44,730 --> 00:05:49,530 또는 위치를 재 복사 방법이있다, INFILE의 한 행에 읽은 후에 102 00:05:49,530 --> 00:05:53,530 다음 OUTFILE로 그를 작성, 패딩을 추가, 우리는 fseek의 103 00:05:53,530 --> 00:05:57,250 원래 행의 시작에 백업, 다음 수평을 반복 104 00:05:57,250 --> 00:05:58,710 거기에서 크기 조정. 105 00:05:58,710 --> 00:06:02,280 방법에 관계없이, 그러나, 당신은거야 모든 픽셀을 반복 할 106 00:06:02,280 --> 00:06:06,370 n 번, 모든 행이 될 또한 N 회 반복했다. 107 00:06:06,370 --> 00:06:09,160 >> 그와 함께, 당신은 비트 맵을해야합니다 생명보다 더 큰. 108 00:06:09,160 --> 00:06:11,760 내 이름은 Zamyla이며,이 CS50입니다. 109 00:06:11,760 --> 00:06:19,542