Goal-based Lab / Transform / Composite

변형과 합성 프로토타입 완성하기

세 레이어의 크기, 각도, 투명도, 위치를 설계하고 자동 검사로 기능을 증명합니다.

작은 기하학 원본 옆에 서로 다른 크기와 방향의 세 종이 레이어를 겹쳐 완성한 구성

기능 조건을 증명하고 중간 프로젝트의 시각 규칙을 시험하기

GOAL
변형 레이어 세 개를 합성하고 자동 검사 PASS 확인
CANVAS
1000 × 1000 RGBA
SUBMIT
실행 결과가 포함된 노트북과 PNG

오늘의 실습 목표

  • 자신의 6주차 PNG 또는 수업용 대체 이미지를 원본으로 선택할 수 있습니다.
  • 원본과 작업본을 분리하고 원본보다 작은 유효한 자르기 영역을 정할 수 있습니다.
  • 서로 다른 크기와 양·음의 회전 각도, 알파 값을 가진 레이어 세 개를 만들 수 있습니다.
  • 세 레이어를 1000 × 1000 RGBA 캔버스 안의 서로 다른 위치에 합성할 수 있습니다.
  • 제목, 창작자, 원본 주소, 라이선스, 변형 내용을 노트북에 기록할 수 있습니다.
  • PNG를 저장하고 새 세션 전체 실행에서 자동 검사 PASS를 확인할 수 있습니다.
오늘의 운영 원칙

50분을 채우는 대신 완료 조건을 증명한다

처음 0-6분의 공통 안내가 끝나면 각자 자신의 속도로 진행합니다. 자동 검사에서 완료 문구를 확인하고 .ipynb.png 두 파일을 제출한 학생은 수업 종료 시각을 기다리지 않고 바로 귀가할 수 있습니다.

속도는 평가하지 않습니다. 25분에 완료하든 여러 번 수정한 뒤 50분에 완료하든 같은 기능 조건으로 판정합니다.

  1. 노트북 준비사본을 만들고 제출 파일명을 정합니다.
  2. 정보 기록제출 정보와 원본 출처를 남깁니다.
  3. 영역 선택원본보다 작은 crop_box를 정합니다.
  4. 레이어 변형각도, 알파, 위치를 서로 다르게 설계합니다.
  5. 결과 검증PNG를 저장하고 자동 검사 PASS를 확인합니다.
  6. 제출과 귀가두 파일의 제출 상태를 확인하고 종료합니다.

EXIT GATE

자동 검사 통과 + 두 파일 제출 확인 = 즉시 귀가

예시와 같은 디자인을 만들 필요가 없습니다. 조건을 충족한 자신의 구성 한 장을 제출하면 필수 실습을 완료한 것입니다.

귀가 조건: 제출 전에 열 가지 확인

  1. 노트북 파일명week07_학번_이름.ipynb 형식으로 변경했습니다.
  2. 제출 정보학번, 이름 또는 별명, 20자 이상의 구성 의도를 작성했습니다.
  3. 원본 선택자신의 6주차 PNG 또는 수업용 대체 이미지가 정상적으로 열립니다.
  4. 출처 기록제목, 창작자, 원본 주소, 라이선스, 변형 내용을 모두 작성했습니다.
  5. 자르기원본 전체보다 작은 유효한 crop_box를 선택했습니다.
  6. 변형 레이어자르기·크기 변경·회전을 적용한 레이어를 세 개 만들었습니다.
  7. 회전과 알파음수와 양수 각도를 모두 사용하고 서로 다른 알파 값을 두 가지 이상 사용했습니다.
  8. 위치와 캔버스세 위치가 서로 다르며 모든 레이어가 1000 × 1000 RGBA 캔버스 안에 들어옵니다.
  9. 전체 재실행새 세션에서 모두 실행했을 때 완료 문구와 최신 PNG가 확인됩니다.
  10. 두 파일 제출실행 결과가 포함된 .ipynbweek07_학번_이름.png를 제출했습니다.

자동 검사는 작품의 미적 취향을 채점하지 않는다

검사 셀은 파일명, 출처 기록, 자르기 범위, 레이어 수, 각도, 알파, 위치, 캔버스 크기, PNG의 최신 상태만 확인합니다. 어떤 색이 더 아름다운지, 어느 구도가 더 좋은지는 하나의 정답으로 판정하지 않습니다.

50분 진행 기준

처음 참여하는 학생을 위한 권장 진행 시간
시간단계완료 표시
0-6분공통 안내, 노트북 열기, 사본 저장, 파일명 변경자신의 사본이 열림
6-12분수정 전 준비부터 저장까지 기준 실행수업용 원본과 기본 합성 출력
12-20분학번·이름·구성 의도와 원본 출처 기록제출 정보와 다섯 출처 항목 출력
20-32분원본보다 작은 crop_box, 양·음 각도, 서로 다른 알파 설정세 레이어의 차이가 보임
32-40분세 위치를 조정해 캔버스 안에서 겹침 완성1000 × 1000 최종 구성
40-46분PNG 저장, 새 세션에서 모두 실행, 자동 검사 확인완료 문구 표시
46-50분노트북과 PNG 다운로드, 두 파일 제출 상태 확인제출 확인 후 귀가

위 시간은 기다려야 하는 시각이 아니라 길을 잃지 않기 위한 기준입니다. 31분에 모든 조건을 달성했다면 31분에 자동 검사를 통과하고 두 파일을 제출한 뒤 귀가할 수 있습니다. 시간이 더 필요한 학생은 최대 50분까지 자신의 속도로 진행합니다.

실습 노트북 준비

위의 시작 버튼으로 Colab을 열거나 노트북을 내려받습니다. 템플릿에는 수업용 원본 생성, 변형 함수, 1000 × 1000 캔버스, 합성 반복, 저장, 자동 검사가 준비되어 있습니다. 빈 노트북에서 코드를 다시 작성하지 않고 EDIT로 표시된 값만 수정합니다.

  1. 템플릿을 직접 열었거나 업로드했다면 파일 → Drive에 사본 저장을 선택합니다.
  2. 상단 파일명을 눌러 week07_학번_이름.ipynb로 바꿉니다.
  3. EDIT 1부터 EDIT 4까지의 값만 수정하고 DO NOT EDIT와 FINAL CHECK는 그대로 둡니다.
노트북이 Colab에서 바로 열리지 않을 때

Starter notebook 카드를 눌러 파일을 기기에 내려받습니다. Colab 첫 화면의 업로드 탭 또는 열린 노트북의 파일 → 노트 업로드에서 내려받은 .ipynb 파일을 선택합니다.

수정 전 기준 실행

처음에는 값을 바꾸지 않고 준비 셀부터 저장 셀까지 순서대로 실행합니다. 수업용 원본, 원본 전체를 자른 미리보기, 같은 위치에 겹친 세 레이어, 저장된 PNG가 차례로 보이면 환경은 정상입니다. 시작값은 일부러 완료 조건을 통과하지 않도록 되어 있습니다.

같은 기하학 원본에서 자른 세 레이어를 서로 다른 크기, 회전, 투명도, 위치로 합성한 7주차 프로토타입 예시
완료 방향을 보여 주는 예시입니다. 이 구도나 값을 복사할 필요는 없으며, 세 변형 레이어가 구분되고 일부가 겹치는 자신의 구성을 만듭니다.
기준 실행 확인

수업용 원본과 기본 합성, 저장 파일이 모두 보이면 수정 준비를 완료했습니다.

NameError가 나오거나 이미지가 보이지 않을 때

오류가 난 셀만 반복하지 않습니다. 맨 위 준비 셀부터 아래로 다시 실행합니다. FALLBACK_SOURCE_PATH, Image, canvas가 정의되지 않았다는 메시지는 앞 셀이 실행되지 않았다는 뜻입니다.

제출 정보와 원본 기록

제출 정보 코드 셀에서 학번, 이름, 구성 의도를 작성합니다. PNG 파일명은 입력한 학번과 이름으로 자동 생성됩니다.

student_id = "20260000"
student_name = "김민지"
composition_intent = "서로 다른 방향의 조각이 중앙에서 겹치며 바깥으로 시선을 이끈다."
output_filename = f"week07_{student_id}_{student_name}.png"

수업용 대체 이미지를 사용한다면 아래 출처 값은 그대로 둡니다. 자신의 6주차 결과물을 사용할 때는 Colab에 PNG를 업로드하고 source_choice = "own", source_path = "업로드한_파일.png"로 바꿉니다. 자신이 만든 이미지라도 제목, 창작자, 원본 주소 또는 자신의 파일 표기, 이용 근거, 변형 내용을 남깁니다.

source_choice = "provided"
source_path = FALLBACK_SOURCE_PATH
source_title = "Week 07 Source Poster"
source_creator = "Course-provided asset"
source_url = "Bundled in the Week 07 notebook"
source_license = "Course use / provided asset"
change_description = "자르기, 크기 변경, 회전, 투명도 조절과 레이어 합성"
원본 기록 확인

셀 아래에 제출자, 구성 의도, 원본 기록, 변형 내용이 자신의 선택과 일치하게 출력됩니다.

파일명 검사에서 멈출 때

output_filename 줄을 직접 다른 문자열로 바꾸지 않습니다. 학번과 이름을 수정한 뒤 셀을 다시 실행하면 week07_학번_이름.png가 자동으로 만들어집니다. 노트북 파일명도 같은 학번과 이름을 사용합니다.

자신의 6주차 PNG를 사용하고 싶을 때

Colab 왼쪽의 폴더 아이콘을 누르고 업로드 아이콘으로 PNG를 올립니다. 표시된 파일명을 복사해 source_path의 따옴표 안에 붙여 넣습니다. 세션을 다시 시작하면 업로드 파일이 사라질 수 있으므로 최종 전체 실행 전에 다시 업로드합니다.

FileNotFoundError 또는 파일을 찾을 수 없다는 안내가 나올 때

source_path의 철자, 공백, 확장자, 대소문자를 Colab 파일 목록과 비교합니다. 수업용 원본으로 돌아가려면 source_choice = "provided", source_path = FALLBACK_SOURCE_PATH로 복구하고 맨 위 준비 셀부터 다시 실행합니다.

원본보다 작은 영역 자르기

자르기 셀의 시작값 (0, 0, working_image.width, working_image.height)는 원본 전체를 선택합니다. 왼쪽·위·오른쪽·아래 경계를 숫자로 바꾸어 더 작은 영역을 선택합니다. 수업용 원본은 900 × 900입니다.

# 예시일 뿐이며 다른 유효한 영역을 선택할 수 있습니다.
crop_box = (140, 120, 760, 780)
자르기 확인

자른 미리보기에서 원본의 일부만 보이고, 출력된 미리보기 크기가 원본 크기와 다릅니다.

자른 이미지가 비어 있거나 매우 작게 보일 때

rightleft보다, bottomtop보다 충분히 큰지 확인합니다. 처음에는 각 방향의 차이가 300픽셀 이상인 영역을 선택하면 결과를 확인하기 쉽습니다.

각도와 알파로 세 레이어 구분

레이어 합성 셀에서 세 목록만 수정합니다. angles에는 음수와 양수를 모두 넣고, 적어도 두 각도는 0이 아니어야 합니다. alphas는 100부터 240 사이의 정수이며 최소 두 값이 달라야 합니다.

# 예시: 범위와 구조를 참고하고 자신의 값을 선택합니다.
angles = [-16, 19, -6]
alphas = [150, 190, 225]
편집 가능한 값의 범위와 의미
허용 범위화면에서 달라지는 것
angles-30부터 30, 음수와 양수 포함레이어의 방향과 회전 후 실제 경계
alphas100부터 240, 서로 다른 값 두 가지 이상아래 레이어가 비치는 정도
positions서로 다른 정수 (x, y) 세 쌍캔버스에서 레이어가 놓이고 겹치는 위치

세 레이어의 목표 크기는 (420, 420), (340, 340), (260, 260)으로 준비되어 있습니다. 회전하면 실제 경계가 더 커질 수 있으므로 셀 아래에 출력되는 실제 레이어 크기를 위치 계산에 사용합니다.

음수와 양수 각도 검사에서 멈출 때

예를 들어 [-12, 0, 18]처럼 0보다 작은 값과 큰 값을 하나 이상씩 사용합니다. 세 값 모두 0이거나 모두 양수이면 방향 비교 조건을 충족하지 않습니다.

알파 값 검사에서 멈출 때

세 값을 정수로 작성하고 각 값이 100~240 범위인지 확인합니다. [180, 180, 180]은 범위에는 맞지만 모두 같으므로 [140, 180, 220]처럼 최소 두 값을 다르게 만듭니다.

세 위치로 겹침 설계

positions의 각 튜플은 해당 레이어 왼쪽 위 모서리의 캔버스 좌표입니다. 처음부터 세 값을 동시에 바꾸지 말고 가장 큰 레이어부터 한 장씩 놓습니다.

# 회전 각도에 따라 실제 크기가 달라지므로 실행 결과를 확인합니다.
positions = [(40, 70), (540, 110), (345, 555)]
  1. 첫 번째 레이어를 왼쪽 위 또는 중앙에 놓고 셀을 실행합니다.
  2. 두 번째 레이어를 첫 번째와 일부 겹치되 캔버스 안에 놓습니다.
  3. 세 번째 레이어로 비어 있는 영역과 겹치는 영역의 균형을 조정합니다.
  4. 각 위치에 실제 레이어 너비와 높이를 더해 1000을 넘지 않는지 확인합니다.
합성 확인

세 레이어가 서로 다른 위치에서 구분되고, 일부가 겹치며, 어느 레이어도 캔버스 경계 밖에서 잘리지 않습니다.

레이어가 캔버스 안에 들어오지 않는다는 오류가 날 때

셀 아래의 실제 레이어 크기를 확인합니다. 예를 들어 실제 너비가 470이고 x가 560이면 합계가 1030이므로 오른쪽이 잘립니다. x를 530 이하로 줄입니다. y도 같은 방식으로 실제 높이와 더해 1000 이하인지 확인합니다.

세 레이어가 보이지만 모두 한곳에 겹칠 때

positions의 세 튜플이 같은지 확인합니다. 각 레이어의 왼쪽 위 좌표를 최소 100픽셀 이상 다른 방향으로 옮긴 뒤 다시 실행합니다. 자동 검사는 세 위치가 서로 다른지도 확인합니다.

PNG 저장과 최신 상태 확인

각도, 알파, 위치를 마지막으로 바꾼 뒤 레이어 합성 셀을 다시 실행하고, 바로 이어서 PNG 저장 셀을 실행합니다. 저장 코드는 수정하지 않습니다.

canvas.save(output_filename)

화면의 이미지와 저장 파일은 자동으로 함께 바뀌지 않는다

값을 바꾸어 화면의 canvas를 새로 만들었더라도 저장 셀을 다시 실행하지 않으면 PNG에는 이전 결과가 남습니다. 최종 수정 뒤에는 합성 → 저장 → FINAL CHECK 순서를 지킵니다.

PNG가 최신 상태가 아니라는 오류가 나올 때

현재 메모리의 canvas와 저장된 PNG 픽셀이 다르다는 뜻입니다. 레이어 합성 셀을 실행하고 바로 이어서 PNG 저장 셀을 실행한 뒤 FINAL CHECK를 다시 실행합니다.

새 세션에서 자동 검사 PASS

  1. 자신의 6주차 PNG를 사용한다면 파일을 안전한 곳에 먼저 보관합니다.
  2. 런타임 → 세션 다시 시작을 선택합니다.
  3. 자신의 PNG를 사용하는 경우 파일을 다시 업로드합니다.
  4. 런타임 → 모두 실행을 한 번 선택합니다.
  5. 마지막 FINAL CHECK 셀까지 오류 없이 실행되는지 기다립니다.
PASS OUTPUT

PASS / 제출 정보와 구성 의도 검사 통과
PASS / 제목, 창작자, 원본 주소, 라이선스, 변형 내용 기록 통과
PASS / 자르기, 크기 변경, 회전 레이어 세 개 검사 통과
PASS / 1000 × 1000 RGBA 합성과 PNG 최신 상태 검사 통과
WEEK 07 TRANSFORMATION PROTOTYPE COMPLETE

FINAL CHECK는 작품 제작 코드가 아니다

검사 셀에는 아직 배우지 않은 파일 비교와 조건 검사 코드가 포함되어 있습니다. 직접 작성하거나 해석할 필요가 없습니다. 오류의 마지막 한글 문장을 읽고 안내된 EDIT 값만 수정합니다. 검사 셀을 지우거나 바꾸면 완료로 인정하지 않습니다.

새 세션 전체 실행 순서 오류가 나올 때

셀을 개별적으로 여러 번 실행한 상태입니다. 결과를 저장한 뒤 세션을 다시 시작하고 모두 실행을 한 번만 선택합니다. 실행 중에는 중간 셀의 재생 버튼을 따로 누르지 않습니다.

두 파일 제출과 귀가

  1. 마지막 셀에 WEEK 07 TRANSFORMATION PROTOTYPE COMPLETE가 보이는지 확인합니다.
  2. 파일 → 다운로드 → .ipynb 다운로드로 실행 결과가 포함된 노트북을 받습니다.
  3. Colab 왼쪽 파일 목록에서 week07_학번_이름.png를 찾아 다운로드합니다.
  4. 제출함에 week07_학번_이름.ipynbweek07_학번_이름.png 두 파일을 모두 올립니다.
  5. 제출 완료 상태를 확인하면 남은 시간과 관계없이 바로 귀가합니다.
모두 실행 PASS 확인 두 파일 제출 확인 후 귀가

완료 판정

자동 검사 PASS가 보이고 제출함에 올바른 .ipynb.png가 등록되었다면 오늘의 필수 학습 목표를 달성했습니다. 작업 속도와 남은 수업 시간은 평가에 반영하지 않습니다.

선택 확장: 완료 후 더 실험하고 싶은 경우만

아래 활동은 귀가 조건이 아니며 추가 점수도 없습니다. 먼저 통과한 두 파일을 보존한 뒤, 원할 때만 사본에서 시도합니다.

8주차 연결

오늘의 한 장은 최종 작품이 아니라 규칙을 시험하는 프로토타입입니다. 8주차에는 이 결과에서 유지할 생성 규칙, 변화시킬 매개변수, 출처 기록을 확정해 여러 장의 생성 포스터 시리즈로 발전시킵니다.

공식 도움말