[python] Pillow을 사용하여 이미지에 패턴 및 질감을 추가하는 방법

이미지 처리를 위해 Python에서 대표적으로 사용되는 라이브러리 중 하나인 Pillow를 소개합니다. Pillow를 사용하면 이미지에 다양한 패턴과 질감을 추가할 수 있습니다. 이번 블로그 포스트에서는 Pillow를 사용하여 이미지에 패턴 및 질감을 추가하는 방법에 대해 알아보겠습니다.

Pillow 설치

Pillow는 Python 이미지 처리 라이브러리로, 다양한 이미지 처리 기능을 제공합니다. Pillow를 사용하기 위해서는 먼저 Pillow를 설치해야 합니다. 아래의 명령을 사용하여 Pillow를 설치할 수 있습니다.

pip install pillow

이미지에 패턴 추가하기

Pillow를 사용하여 이미지에 패턴을 추가하는 방법은 다음과 같습니다.

from PIL import Image, ImageDraw

# 원본 이미지 로드
image = Image.open("image.jpg")

# 패턴을 추가할 이미지 크기 설정
pattern_size = (100, 100)

# 패턴 이미지 생성
pattern_image = Image.new("RGBA", pattern_size, (255, 255, 255, 0))
draw = ImageDraw.Draw(pattern_image)

# 패턴 그리기
draw.rectangle((0, 0, 50, 50), fill=(255, 0, 0, 128))
draw.rectangle((50, 50, 100, 100), fill=(0, 255, 0, 128))

# 이미지에 패턴 추가
image.paste(pattern_image, (0, 0), pattern_image)

# 결과 이미지 저장
image.save("result.jpg")

위의 코드는 이미지에 크기가 100x100인 패턴을 추가하는 예제입니다. Image.open() 함수를 사용하여 원본 이미지를 로드하고, Image.new() 함수를 사용하여 패턴 이미지를 생성합니다. ImageDraw.Draw()를 사용하여 패턴을 그린 후, image.paste()를 사용하여 이미지에 패턴을 추가합니다. 마지막으로 image.save()를 사용하여 결과 이미지를 저장합니다.

이미지에 질감 추가하기

Pillow를 사용하여 이미지에 질감을 추가하는 방법은 다음과 같습니다.

import random
from PIL import Image

# 원본 이미지 로드
image = Image.open("image.jpg")

# 이미지의 너비, 높이 가져오기
width, height = image.size

# 질감을 위한 새로운 이미지 생성
texture_image = Image.new("RGBA", (width, height))

# 이미지에 무작위로 질감 추가
for x in range(width):
    for y in range(height):
        r, g, b, a = image.getpixel((x, y))
        noise = random.randint(-50, 50)
        r += noise
        g += noise
        b += noise
        r = max(0, min(255, r))
        g = max(0, min(255, g))
        b = max(0, min(255, b))
        texture_image.putpixel((x, y), (r, g, b, a))

# 결과 이미지 생성
result_image = Image.alpha_composite(image.convert("RGBA"), texture_image)

# 결과 이미지 저장
result_image.save("result.jpg")

위의 코드는 이미지에 무작위로 질감을 추가하는 예제입니다. Image.open() 함수를 사용하여 원본 이미지를 로드하고, Image.new() 함수를 사용하여 질감을 위한 새로운 이미지를 생성합니다. 그 후에는 이미지의 각 픽셀을 순회하면서 무작위로 색상 값을 조정하여 질감을 추가합니다. 마지막으로 Image.alpha_composite()를 사용하여 원본 이미지와 질감 이미지를 합성하고, 결과 이미지를 저장합니다.

위의 예제 코드는 Pillow를 사용하여 이미지에 패턴 및 질감을 추가하는 방법에 대한 간단한 예제이며, 원하는 패턴이나 질감을 추가하려면 더 복잡한 로직을 구현해야 합니다. Pillow에 대한 자세한 사용법은 공식 문서를 참조하시기 바랍니다.

참고 자료