본문 바로가기
Python

[Python] 이미지 위에 투명도가 있는 PNG 이미지 합치기

by bryan.oh 2023. 6. 14.
반응형

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
반응형

댓글