CodeGym /행동 /Python SELF KO /이미지 합치기와 결합하기

이미지 합치기와 결합하기

Python SELF KO
레벨 45 , 레슨 3
사용 가능

1. 준비

합치기 위한 이미지 로드

여러 이미지를 작업하기 전에 이미지를 로드해야 해. Pillow는 JPEG, PNG, BMP, GIF 같은 대부분의 인기 이미지 형식을 지원해.

Python

from PIL import Image

# 이미지 로드하기
background = Image.open("background.jpg")
foreground = Image.open("foreground.png")

여기서 우리는 배경 이미지와 오버레이 이미지 두 개를 로드했어. 몇몇 메소드의 경우에는 두 이미지가 동일한 크기를 가져야 한다는 걸 기억해야 해.

2. 이미지 오버레이

paste() 메소드

paste() 메소드는 하나의 이미지를 다른 이미지 위에 특정 좌표에서 삽입할 수 있어. 이 메소드는 콜라주 효과를 만들거나 하나의 이미지를 다른 이미지 위에 오버레이할 때 유용해.

Python

# 배경 크기에 맞게 전경 크기 변경
foreground = foreground.resize(background.size)

# 배경 위에 이미지 오버레이
background.paste(foreground, (50, 50))  # (50, 50) 좌표에 foreground 삽입

# 결과 저장
background.save("pasted_image.jpg")

여기서 foreground 이미지는 background 위에 (50, 50) 위치에 삽입돼. 만약 전경이 배경의 경계를 초과하면, 일부가 잘릴 거야.

paste()에서 마스크 사용

paste() 메소드는 마스크를 지원해서 투명 영역을 유지하면서 이미지를 부분적으로 오버레이할 수 있어. 마스크는 L (회색조) 또는 RGBA 모드여야 해.

Python

# 마스크 생성
mask = Image.open("mask.png").convert("L")  # 마스크를 회색조로 변환

# 마스크를 사용한 이미지 삽입
background.paste(foreground, (50, 50), mask=mask)
background.save("pasted_with_mask.jpg")

mask.png 마스크는 foreground 이미지의 어떤 부분이 보여질지를 결정하고, 하나의 이미지를 다른 이미지 위에 부드럽게 오버레이할 수 있게 해.

3. 이미지 블렌딩

blend() 메소드

blend() 메소드는 두 이미지를 특정 투명도로 섞을 수 있어. 이 메소드는 새로운 이미지 객체를 생성하고, 두 원본 이미지를 혼합한 결과를 나타내. blend()를 사용하려면 두 이미지가 같은 크기여야 해.

단순 이미지 블렌딩

Python

# 동일한 크기로 이미지 크기 변경
background = background.resize((500, 500))
foreground = foreground.resize((500, 500))

# 투명도를 설정하여 이미지 블렌딩
blended_image = Image.blend(background, foreground, alpha=0.5)

# 결과 저장
blended_image.save("blended_image.jpg")

alpha 파라미터는 foreground 이미지의 투명도를 결정해. alpha = 0.5면 이미지가 균등하게 섞여. alpha = 0.0foreground 이미지는 완전히 투명하고 배경만 보이고, alpha = 1.0면 배경이 완전히 투명하고 전경만 보여.

4. 마스크를 사용한 이미지 합성

composite() 메소드

composite() 메소드는 마스크를 기반으로 두 이미지를 결합하여 어떤 이미지의 어떤 부분이 보일지를 결정해. 이 메소드는 복잡한 합성과 하나의 이미지를 다른 이미지 위에 정밀하게 오버레이할 때 매우 유용해.

composite()를 사용한 이미지 합성 예제

Python

# 두 이미지와 마스크가 동일한 크기를 가지는지 확인
background = background.resize((500, 500))
foreground = foreground.resize((500, 500))
mask = mask.resize((500, 500))

# 마스크를 사용한 합성
composited_image = Image.composite(foreground, background, mask)

# 이미지 저장
composited_image.save("composited_image.jpg")

마스크는 최종 이미지에서 foregroundbackground의 어떤 부분들이 보일지를 정의해. 마스크의 흰색 영역은 foreground를 보이게 하고, 검은색 영역은 background를 보이게 해.

5. 예제

paste(), blend(), composite() 메소드를 혼합 사용한 예제

이제 더 복잡한 합성을 만들기 위해 이 메소드를 통합해 보자. 배경, 반투명 이미지를 가진 전경, 그리고 마스크가 있다고 가정해 보자.

Python

from PIL import Image

# 이미지 로드
background = Image.open("background.jpg").resize((500, 500))
foreground = Image.open("foreground.png").resize((500, 500))
mask = Image.open("mask.png").convert("L").resize((500, 500))

# 1. 배경과 전경을 반투명하게 블렌딩
blended_image = Image.blend(background, foreground, alpha=0.3)

# 2. 마스크를 사용해서 최종 이미지에 오버레이
final_composite = Image.composite(foreground, blended_image, mask)

# 최종 결과 저장
final_composite.save("final_composition.jpg")

이 예제는 blend()composite()를 순서대로 적용하여 다층합성을 만드는 방법을 보여줘.

이미지 결합 메소드의 실제 적용

  1. 콜라주 만들기: paste() 메소드는 여러 이미지를 하나의 캔버스에 추가하여 콜라주와 모자이크를 만들 수 있어.
  2. 오버레이와 투명도 효과: blend() 메소드는 사진 편집 및 효과를 만들 때 유용한 부드러운 전환을 만들어 줘.
  3. 마스크를 이용한 합성: composite() 메소드는 이미지의 어떤 부분이 보일지 정확하게 제어하여 복잡한 합성을 가능하게 해.

메소드 비교

메소드 설명 적용
paste() 하나의 이미지를 다른 이미지 위에 오버레이 콜라주, 이미지의 특정 위치 배치
blend() 특정 투명도로 두 이미지 섞기 부드러운 전환 및 오버레이 효과
composite() 마스크를 기반으로 두 이미지 결합 정밀한 오버레이 및 복잡한 합성
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION