>> [음악 연주]
>> ROB 보덴 : 안녕, 난 롭 해요하자 크기에 이것을 시도.
그래서, 우리는 다시 시작하려고하는 기본적으로 copy.c의 복사,
몇 가지 변경합니다.
바로 우리가 변화를 볼 수 있습니다 곳 대신 볼 검사의 경우
ARGC, 우리는 확인하는 3 일치하지 싶지 않습니다 ARGC 이후, 4 일치하지 않는 경우
지금 우리는 단지 INFILE에 데려 갈 수 없어 및 OUTFILE, 그러나 우리는 또한 섭취하시는
우리가하는 금액을 말합니다 N, 원본 이미지로 확장.
우리는 그 확신하면, 우리는 할 수있다 다만 atoi와를 사용하여 정수 N 변환합니다.
>> 그래서, 지금 우리는 몇 가지를 만들려고 별명은 단지 2 INFILE argv를 호출하고,
ARGV 3 OUTFILE, ARGV 2 때문에 ARGV 3 매우 도움이 이름이 없습니다.
이제 우리는 확인 n은 확인하기 위하여 검사 할 범위 내에서 우리가 기대하는, 그래서
스펙을 지정하는 그것보다 작거나의 경우 제로 같거나 100보다 크
그 잘못된 크기 조정 계수의, 그리고 우리는 그 사용자에게 경고해야합니다.
>> 우리 모두가 그 이상 들어가면, 우리는 할 수있다 마지막으로 우리의 INFILE을 열고, 우리는 필요
있는지 확인하십시오 오류로 오프닝은 어떤 이유로 실패하지 않았다.
우리는 또한 우리의 OUTFILE을 열 필요가 있고, 다시 있는지 확인하십시오 오류
어떤 이유로 실패하지 않았다.
하지만 확신 할 경우의 개통 OUTFILE 우리가 닫아야 실패
이미 열린 INFILE.
>> 그래서, 다음, 즉 실패하지 않은 가정 우린 - 그냥 같이 copy.c - -
헤더에서 읽은 것 INFILE에서.
우리는 반드시 유효한의 만드는거야 비트 맵,하지만 지금 우리는 몇 가지를 할거야
조금 다르게.
그래서 일단, 우리가 원하는거야 원래의 폭과 높이를 기억
INFILE의, 때문에 우리는에가는거야 OUTFILE을 위해 변경 될 수있다.
그래서 지금 이상한 이유로 그 기억 bi.biheight, 부정하고,
그래서의 실제 높이, 긍정적 인, 우리 절대 값을 받고 있습니다.
>> 이제, 패딩 같은 될 것입니다 이 copy.c했다 계산으로,
이전 폭을 사용하여, 지금 우린 실제로 바꿀 것
우리의 헤더에있는거야.
그래서 우리가 우리의 폭을 곱거야 N, 우리는에 의해 폭을 확장하고 있기 때문에
우리가에 있기 때문에 N, N에 의해​​ 높이를 곱 n으로 확장, 그리고 지금 우리가
새로운 패딩 계산 새 너비에 따라.
>> 그래서 지금 우리는 몇 가지를 변경해야 우리의 헤더에있는 다른 필드.
Bi.biSizeImage가 있어야하는데 픽셀의 모든 바이트의 크기
이미지의 패딩.
그리고 우리의 단일 행의 크기 이미지는 RGB의 크기 배, 크기
단일 픽셀의, 배 번호 행의 픽셀 플러스 패딩에
행의 끝.
그리고 우리는 곱해거야 얻을 수있는 우리의 높이의 절대 값
바이트의 총수 화상 데이터.
bf.bfSize은 총 수입니다 우리의 이미지 데이터를 바이트, 그래서
bi.biSizeImage 플러스 우리의 헤더의 크기입니다.
따라서, 비트 맵 파일의 크기에 추가 비트 맵 정보의 헤더 및 크기
OK, 헤더.
그래서 우리가 필요로하는 모든 정보 우리의 헤더에 변경합니다.
이제 우리는 비트 맵 파일 헤더를 쓸 것이다 우리 OUTFILE, 우리의 비트 맵 정보에
지금 우리 outfile로 헤더 및 우리는가는 시작할 준비가
실제 픽셀 이상.
>> 그래서 우리는 반복 할 INFILE의 스캔 라인.
그래서 우리는 oldheight 반복합니다.
우리가 기억하는 데 필요한 이유입니다 우리가 그것을 변경하기 전에 원래 높이,
및 N으로 스케일링.
이제 우리는 하나를 읽을거야 에 INFILE의 행
크기 oldwidth의 버퍼.
RGB의, 그래서 여기에 우리가 freading하고 크기 트리플, 하나의 픽셀, 그리고 오래된 폭
우리의 버퍼에 INFILE에서 그들.
그리고 그 전체가 될 것 이 배열의 행.
그래서 지금, 우리는에 N 번 반복 할 우리 OUTFILE n 번에이 행을 인쇄 할 수 있습니다.
그리고 그이 루프가 수행하는 작업입니다.
이 내부 루프는 반복된다 배열에서 인쇄 자체를 행
배열을 n 번에서 각 픽셀.
그래서 제로 번째의 요소는 인쇄중인 n 번, 첫 번째 요소가되고있다
N 번 인쇄.
그리고 그 종류의 우리가 어떻게 갈거야 것 수평 OUTFILE에 확장하고,
이 루프, 우리는 N을 반복하고 있기 때문에 시간은 우리가 갈거야 방법입니다
수직 스케일.
>> 여기 아래, 우리는 우리가 추가 할 필요가 있음을 볼 수 각 행의 끝에 패딩.
이에 대한 루프 내에서 이유입니다 그것은 단지의 n 행을 인쇄하는 것
INFILE에서이 하나의 행.
그런 다음 아래로 여기, 내가 건너 갈거야 INFILE의 패딩 번 이후
우리는 한 행으로 완료 INFILE, 우리는 걱정하지 않는다
어떤 패딩이었다.
우리는 단지 두 번째 행에 도착합니다.
그리고 우리는 다시 루프거야 모든 수행 이 다시 두 번째 행.
>> 마지막으로, 한 번 우리 모두는 그와 함께 완료, 우리는 가까운 INFILE을 닫을 수 있습니다
OUTFILE 및 반환 0 우리가 수행하고 있기 때문이다.
>> 내 이름은 롭이며,이 크기 조정했다.
>> [음악 연주]