Python Pillow 픽셀(pixel) 값 변경 방법

Python에서 Pillow 픽셀의 rgba 값을 알아내는 방법과 특정 픽셀의 값을 변경하는 방법을 살펴보도록 하겠습니다.

Python Pillow 픽셀의 색상 확인 방법

우선 작업할 이미지는 20×20 크기의 a.png 파일이며 아래 그림 1과 같습니다.

그림 1. Pillow 픽셀 확인 및 변경을 위한 예제 이미지
그림 1. Pillow 픽셀 확인 및 변경을 위한 예제 이미지

Pillow를 사용해서 해당 이미지 파일을 열어서 (10, 10) 좌표에 있는 값을 읽어오도록 하겠습니다.

from PIL import Image

im = Image.open("a.png")
dat = im.load()
pixel = dat[10, 10]
print(pixel)
Python

위와 같은 코드를 실행하면 아래와 같이 (10, 10)의 픽셀의 RGBA값을 튜플로 되돌려 줍니다.

그림 2. (10, 10)의 픽셀 값(RGBA) 출력
그림 2. (10, 10)의 픽셀 값(RGBA) 출력

Python Pillow 특정 픽셀의 색상 변경 방법

이제 원본 이미지는 손상시키지 않고 (10, 10)의 색상을 빨간색(#FF0000)으로 바꿔보겠습니다. 1번 라인에 튜플에 들어가는 값은 순서대로 R, G, B, A 입니다. 2번 라인과 같이 다른 파일 이름을 지정해 주면, 새로운 파일로 저장됩니다.

dat[10, 10] = (255, 0, 0, 255)
im.save("b.png")
Python

위의 코드를 실행한 결과는 아래와 같습니다.

그림 3. (10, 10)의 값이 #FF0000으로 변경된 이미지 확인
그림 3. (10, 10)의 값이 #FF0000으로 변경된 이미지 확인

For 루프 사용하여 색상 변경

이제 for-loop을 사용해서 특정 영역의 색상을 변경해 보도록 하겠습니다. x는 11~17인 경우이면서, y는 6~10인 경우에만 빨간색으로 채워보도록 하겠습니다.

width = im.size[0]
height = im.size[1]

for x in range(width):
  for y in range(height):
    if 10 < x < 18 and 5 < y < 11:
      dat[x, y] = (255, 0, 0, 255)
im.save("c.png")
Python

위의 코드를 추가로 실행하면 아래와 같이 예상했던 영역에 빨간색으로 채워져 있는 것을 확인할 수 있습니다.

그림 4. (11, 6)부터 (17, 10)까지 빨간색으로 채워진 결과
그림 4. (11, 6)부터 (17, 10)까지 빨간색으로 채워진 결과

관련 자료

Pillow의 공식문서 PixelAccess Class 페이지를 참고했습니다.

같이 읽으면 좋은 글

Leave a Comment