프로그래밍 언어/Python

이미지 합성하기

· 코딩마이데이

서로 다른 이미지를 적절히 합성하면 색다른 분위기의 이미지를 만들 수 있습니다. 여기서는 이미지의 불투명도(opacity)를 조절하여 다른 이미지와 합성하는 방법을 알아봅니다. 구체적으로는, 원본 이미지에 불투명한 검정색 이미지를 합성해서 명도를 어둡게 만들어 보겠습니다.

 

이미지 생성

비주얼 스튜디오 코드에서 새로운 파일을 생성한 뒤, 파일명을 'step_2_2.py'로 변경합니다. 다음 코드를 입력하고, 대화형 창에서 실행하면 불투명도 60% 수준의 검정색 이미지가 화면에 출력됩니다.

from PIL import Image

SIZE = (500, 500) # 03
img_black = Image.new(mode="RGBA", size=SIZE, color=(0, 0, 0, 153)) # 04
img_black

[실행결과]

 

03 이미지의 크기를 튜플 타입으로 저장합니다. 가로세로 모두 500픽셀인 정사각형 크기입니다.

04 new() 함수를 사용하여 새로운 Image 객체를 생성합니다. 매개변수 mode에 "RGBA"를 전달해 불투명도(opacity)를 반영할 수 있도록 했고, color에 (R, G, B, A) 순서로 색상 값을 전달합니다. 여기서 R(빨간색), G(녹색), B(파란색), A(알파 채널)는 0~255 사이의 정수입니다.

 

이미지 합성

'img' 폴더의 'img_001.jpg' 파일을 불러와 Image 객체를 생성하고, 이를 새로 검정색 이미지와 합성하여 보정해보겠습니다. 새로 생성한 img_black는 알파 채널이 반영된 검정색 이미지이므로, 이를 다른 이미지애 합성하면 전체적으로 어둡게 보정될 것입니다.

비주얼 스튜디오 코드에서 새로운 파일을 생성하고, 파일명을 'step_2_3.py'로 변경하세요. 다음 코드를 입력한 뒤, 대화형 창에서 실행하면 어둡게 보정된 'img_001.jpg' 이미지 파일이 출력됩니다.

from PIL import Image
from step_1_1 import IMG_DIR # 이전에 작성한 모듈을 불러옵니다.

SIZE = (500, 500)
img = Image.open(IMG_DIR / "img_001.jpg")
img_resize = img.resize(SIZE)
img_black = Image.new(mode="RGBA", size=SIZE, color=(0, 0, 0, 153))
img_comp = Image.alpha_composite(img_resize.convert("RGBA"), img_black) # 08
img_comp

 

[실행결과]

 

08 함수 alpha_composite()의 두 매개변수로 전달되는 이미지는 서로 크기와 색상 모드가 일치해야 하므로 함수 convert()를 사용해 img_resize의 모드를 "RGBA"로 변경하고 img_black과 알파 합성합니다.

 

'프로그래밍 언어 > Python' 카테고리의 다른 글

이미지 콜라주에 메시지 남기기  (0) 2025.12.02
이미지 배열하기  (0) 2025.11.29
이미지 크기 변경하기  (0) 2025.11.23
이미지 처리 기본 익히기  (0) 2025.11.17
이미지 불러오기  (0) 2025.11.14