반응형
PIL 사용
from PIL import Image
# 배경 이미지 열기
background = Image.open('background.png')
# 상단에 합칠 이미지 열기
overlay = Image.open('overlay.png')
# 이미지 크기 조정
overlay = overlay.resize(background.size)
# 이미지 합치기
combined = Image.alpha_composite(background.convert('RGBA'), overlay.convert('RGBA'))
# 결과 이미지 저장
combined.save('combined.png')
Numpy 사용
import cv2
import numpy as np
# 배경 이미지 로드
background = cv2.imread('background.jpg')
# 투명한 배경을 가진 이미지 로드
foreground = cv2.imread('foreground.png', cv2.IMREAD_UNCHANGED)
# 배경 이미지 크기에 맞게 투명한 이미지 크기 조정
resized_foreground = cv2.resize(foreground, (background.shape[1], background.shape[0]))
# 알파 채널 분리
foreground_alpha = resized_foreground[:, :, 3]
foreground_rgb = resized_foreground[:, :, :3]
# 알파 채널을 3채널로 확장
foreground_alpha_expanded = np.expand_dims(foreground_alpha, axis=2)
foreground_alpha_expanded = np.repeat(foreground_alpha_expanded, 3, axis=2)
# 배경 이미지와 투명한 이미지 합치기
result = cv2.multiply(background.astype(float), (1 - (foreground_alpha_expanded / 255)))
result += cv2.multiply(foreground_rgb.astype(float), (foreground_alpha_expanded / 255))
result = result.astype(np.uint8)
# 결과 이미지 저장
cv2.imwrite('result.png', result)
728x90
반응형
'Python' 카테고리의 다른 글
[selenium] move to bottom (scroll down) (0) | 2023.08.03 |
---|---|
Mac 에서 다운받은 ChromeDriver 를 권한 문제로 실행할 수 없을 때 (0) | 2023.08.03 |
streamlit pycharm 에서 debug 사용하기 (conda) (1) | 2023.05.23 |
[Python] 여러 pdf 파일 하나로 합치기 (feat. PdfMerger) (0) | 2023.04.10 |
iframe 에 Jupyter notebook 넣기 (0) | 2023.03.27 |
댓글