27.Python Pillow로 이미지 처리 마스터하기: VSCode 실전 활용법

저도 처음에는 회사에서 받은 수백 장의 상품 사진 크기를 줄이기 위해, 하나하나 포토샵으로 열어서 마우스 클릭을 반복하고 있었습니다. 정확히 100장쯤 처리했을 때 손가락 마디가 저려오며 '내가 지금 뭘 하고 있는 건가' 싶었던 기억이 납니다. 반나절을 꼬박 의미 없는 클릭질에 쏟아붓고 나서야 검색을 해보니 파이썬으로 이 작업을 자동화할 수 있다는 걸 알게 되었고, 그렇게 만난 라이브러리가 바로 Pillow였습니다. 처음에는 PILPillow라는 이름이 헷갈려 설치 과정에서 살짝 헤맸지만, 막상 익히고 나니 오전 내내 붙잡고 있던 수백 장의 이미지 리사이징 작업이 단 5초 만에 거짓말처럼 끝났습니다. 이번 글에서는 그때 제가 겪었던 시행착오를 바탕으로, VS Code 환경에서 Pillow를 설치하고 실무 이미지를 다루는 방법을 완벽하게 정리해 보겠습니다


이미지 파일의 크기를 줄이거나, 여러 장의 사진에 똑같은 워터마크를 넣거나, 특정 폴더에 있는 수백 장의 사진을 한 번에 리사이징해야 하는 상황을 겪어본 적이 있으신가요? 이런 반복적인 이미지 작업을 손으로 하나하나 처리하다 보면 시간이 순식간에 사라지는데, Python의 Pillow 라이브러리를 활용하면 이런 작업을 코드 몇 줄로 자동화할 수 있습니다. 이번 글에서는 VSCode 환경에서 Pillow를 설치하고 실제로 이미지를 다루는 방법까지 실전 예제와 함께 정리해보겠습니다.

Pillow란 무엇인가

이미지 처리를 위한 Python 라이브러리

Pillow는 Python에서 이미지를 열고, 편집하고, 저장할 수 있게 해주는 대표적인 이미지 처리 라이브러리입니다. 원래는 PIL(Python Imaging Library)이라는 이름으로 시작했지만, 개발이 중단된 이후 커뮤니티가 이를 이어받아 Pillow라는 이름으로 발전시켜 지금까지 널리 사용되고 있습니다.

비유하자면 Pillow는 마치 포토샵의 기능 중 자주 쓰이는 도구들만 쏙쏙 뽑아서 코드로 자동 실행할 수 있게 만든 미니 편집 도구 상자와 같습니다. 마우스로 클릭하며 작업하는 대신, 코드 한 줄로 수백 장의 이미지에 동일한 작업을 순식간에 적용할 수 있다는 점이 가장 큰 매력입니다.

Pillow로 할 수 있는 작업들

  • 이미지 크기 조절(리사이징) 및 자르기(크롭)
  • 이미지 포맷 변환(JPG, PNG, WEBP 등)
  • 텍스트나 로고 워터마크 삽입
  • 이미지 회전, 반전, 필터 적용
  • 썸네일 자동 생성

VSCode에서 Pillow 개발 환경 준비하기

Pillow 설치하기

VSCode에서 터미널을 열고 다음 명령어로 Pillow를 설치할 수 있습니다.

pip install Pillow

설치가 완료되면 정상적으로 설치되었는지 간단히 확인해보는 것이 좋습니다.

from PIL import Image
print("Pillow 설치 완료!")


인터프리터 설정 확인하기

가상환경을 사용하고 있다면 VSCode 하단의 인터프리터 선택 메뉴에서 올바른 가상환경이 선택되어 있는지 반드시 확인해야 합니다. 인터프리터가 다르게 설정되어 있으면 분명히 설치했는데도 "No module named PIL"이라는 오류를 마주하게 되는데, 이는 마치 냉장고에 분명히 재료를 넣어뒀는데 다른 냉장고 문을 열어서 재료가 없다고 착각하는 것과 비슷한 상황입니다.


Pillow 기본 사용법 실습

이미지 열고 정보 확인하기

가장 먼저 이미지를 불러오고 기본 정보를 확인하는 방법부터 살펴보겠습니다.

from PIL import Image

img = Image.open('sample.jpg')
print(f"이미지 크기: {img.size}")
print(f"이미지 포맷: {img.format}")
print(f"컬러 모드: {img.mode}")

img.show()

이미지 리사이징과 포맷 변환

이미지 크기를 조절하고 다른 포맷으로 저장하는 작업은 다음과 같이 처리합니다.

from PIL import Image

img = Image.open('sample.jpg')

# 크기 조절 (가로 800px 기준)
resized_img = img.resize((800, 600))
resized_img.save('resized_sample.png')

print("리사이징 및 포맷 변환 완료!")

여러 이미지 한 번에 처리하기

Pillow의 진짜 힘은 반복 작업을 자동화할 때 드러납니다. 폴더 안에 있는 이미지 전체를 한 번에 리사이징하는 예제를 살펴보겠습니다.

import os
from PIL import Image
# 현재 파일의 디렉토리를 파이썬 경로에 추가 sys.path.append(os.path.dirname(os.path.abspath(__file__)))
folder_path = './images' for filename in os.listdir(folder_path): if filename.lower().endswith(('.jpg', '.png')): img_path = os.path.join(folder_path, filename) img = Image.open(img_path) img_resized = img.resize((400, 400)) img_resized.save(f'./resized/{filename}') print("전체 이미지 리사이징 완료!")

이렇게 반복문과 결합하면 수백 장의 이미지도 순식간에 처리할 수 있어, 마치 세탁소에서 옷을 한 벌씩 다림질하는 대신 대형 프레스로 한 번에 눌러버리는 효율을 얻는 셈입니다.

실전 활용 팁

워터마크 텍스트 삽입하기

이미지에 텍스트를 삽입하고 싶다면 ImageDraw 모듈을 함께 활용하면 됩니다.

from PIL import Image, ImageDraw, ImageFont

img = Image.open('sample.jpg')
draw = ImageDraw.Draw(img)

draw.text((10, 10), "Copyright 2026", fill=(255, 255, 255))
img.save('watermarked_sample.jpg')



썸네일 생성 시 주의할 점

resize() 대신 thumbnail() 메서드를 사용하면 원본 이미지의 비율을 유지하면서 크기를 줄일 수 있어 훨씬 편리합니다. 다만 thumbnail()은 원본 객체 자체를 변경하는 방식이라는 점을 기억해야 하는데, 이를 모르고 사용하면 예상과 다른 결과에 당황할 수 있습니다.

from PIL import Image

img = Image.open('sample.jpg')
img.thumbnail((200, 200))
img.save('thumbnail_sample.jpg')

마무리

지금까지 Python Pillow 라이브러리를 활용해 이미지를 다루는 기본기부터 실전 활용법까지 살펴봤습니다. VSCode 환경에서 직접 코드를 작성하고 실행해보면 이미지 처리라는 작업이 생각보다 훨씬 손쉽게 느껴질 것입니다.

핵심 내용을 정리하면 다음과 같습니다.

  • Pillow는 Python에서 이미지를 다루는 가장 대표적인 라이브러리입니다
  • pip install Pillow 명령어 하나로 간단히 설치할 수 있습니다
  • 리사이징, 포맷 변환, 워터마크 삽입 등 다양한 이미지 편집 작업이 가능합니다
  • 반복문과 결합하면 대량의 이미지를 한 번에 자동으로 처리할 수 있습니다
  • thumbnail() 메서드는 원본 비율을 유지하면서 크기를 줄이는 데 유용합니다

다음 글에서는 Pillow를 활용해 이미지를 자동으로 분류하거나 간단한 필터 효과를 적용하는 방법에 대해 더 깊이 다뤄보도록 하겠습니다.


댓글

이 블로그의 인기 게시물

1.Python 설치부터 실행까지 10분 만에 끝내기 — 초보자도 바로 따라 하는 완벽 가이드

30.Python pyautogui로 마우스와 키보드 자동화하기: VSCode 실전 가이드

29.Python subprocess로 외부 명령어 실행하기: VSCode 실전 활용법