pillow 사용법. 이미지 작업하기

Pillow는 Python에서 이미지 작업을 수행하는 데 매우 유용한 라이브러리입니다. 이 라이브러리는 이미지 열기, 저장,변환, 필터링, 크기 조정, 회전 등의 다양한 이미지 처리 기능을 제공합니다. 아래에서는 Pillow의 기본적인 사용법을 단계별로 설명하겠습니다.

1. Pillow 설치

먼저 Pillow 라이브러리를 설치해야 합니다.

pip install Pillow

2. 이미지 열기 및 저장

Pillow를 사용하여 이미지를 열고 저장하는 방법입니다.

이미지 열기

from PIL import Image # 이미지 열기 image = Image.open('example.jpg') # 이미지 보기 image.show()
  • Image.open(): 이미지를 열어 Image 객체를 반환합니다.
  • image.show(): 이미지를 기본 이미지 뷰어에서 보여줍니다.

이미지 저장

# 이미지 저장 image.save('output_image.png')
  • image.save(): 이미지를 다른 형식으로 저장하거나 파일 이름을 지정하여 저장할 수 있습니다.

3. 이미지 크기, 모드, 형식 확인

열린 이미지의 정보를 확인할 수 있습니다.

# 이미지 크기 (가로, 세로) print(f"이미지 크기: {image.size}") # 이미지 형식 print(f"이미지 형식: {image.format}") # 이미지 색상 모드 (RGB, L, 등) print(f"이미지 모드: {image.mode}")

4. 이미지 크기 조정

이미지의 크기를 조정하는 방법입니다.

# 크기 조정 (가로 400px, 세로 300px) resized_image = image.resize((400, 300)) # 크기 비율에 맞게 축소 resized_image = image.resize((int(image.width / 2), int(image.height / 2))) # 이미지 저장 resized_image.save('resized_image.jpg')

5. 이미지 자르기

이미지의 특정 부분을 자르는 방법입니다.

# 자르기 영역 정의 (좌측 상단 x, y, 우측 하단 x, y) cropped_image = image.crop((100, 100, 400, 400)) # 이미지 저장 cropped_image.save('cropped_image.jpg')

6. 이미지 회전

이미지를 원하는 각도로 회전할 수 있습니다.

# 45도 회전 rotated_image = image.rotate(45) # 이미지 저장 rotated_image.save('rotated_image.jpg')

7. 이미지 필터 적용

Pillow는 다양한 필터를 제공합니다. 예를 들어, 이미지에 블러 효과를 적용할 수 있습니다.

from PIL import ImageFilter # 블러 필터 적용 blurred_image = image.filter(ImageFilter.BLUR) # 이미지 저장 blurred_image.save('blurred_image.jpg')

다양한 필터 옵션은 다음과 같습니다:

  • ImageFilter.BLUR: 블러 효과
  • ImageFilter.CONTOUR: 윤곽선 검출
  • ImageFilter.DETAIL: 세부 강조
  • ImageFilter.EDGE_ENHANCE: 가장자리 강조
  • ImageFilter.EMBOSS: 엠보싱 효과
  • ImageFilter.SHARPEN: 선명하게

8. 이미지 색상 모드 변환

이미지의 색상 모드를 변경하는 방법입니다. 예를 들어, 컬러 이미지를 흑백으로 변환할 수 있습니다.

# 그레이스케일로 변환 gray_image = image.convert('L') # 이미지 저장 gray_image.save('gray_image.jpg')
  • 'L': 흑백(그레이스케일) 모드
  • 'RGB': 컬러 모드
  • 'CMYK': 인쇄용 모드

9. 이미지 미러링

이미지를 좌우 또는 상하로 뒤집는 방법입니다.

# 좌우 반전 flipped_image = image.transpose(Image.FLIP_LEFT_RIGHT) # 상하 반전 flipped_image = image.transpose(Image.FLIP_TOP_BOTTOM) # 이미지 저장 flipped_image.save('flipped_image.jpg')

10. 이미지 합성

두 개의 이미지를 합성하여 혼합하는 방법입니다.

# 두 이미지 열기 image1 = Image.open('image1.jpg') image2 = Image.open('image2.jpg') # 두 이미지 크기를 동일하게 맞춤 image2 = image2.resize(image1.size) # 투명도를 50%로 설정하여 두 이미지 합성 blended_image = Image.blend(image1, image2, alpha=0.5) # 이미지 저장 blended_image.save('blended_image.jpg')

11. 이미지 텍스트 추가

이미지에 텍스트를 추가할 수 있습니다.

from PIL import ImageDraw, ImageFont # 이미지 열기 image = Image.open('example.jpg') # 이미지에 텍스트 추가하기 위해 ImageDraw 객체 생성 draw = ImageDraw.Draw(image) # 글꼴 설정 (시스템에 설치된 폰트 사용) font = ImageFont.truetype("arial.ttf", size=45) # 텍스트 추가 draw.text((100, 100), "Hello, World!", font=font, fill=(255, 255, 255)) # 이미지 저장 image.save('text_image.jpg')

12. 이미지 히스토그램

이미지의 픽셀 값 분포를 나타내는 히스토그램을 가져올 수 있습니다.

# 히스토그램 가져오기 histogram = image.histogram() # 히스토그램의 첫 10개 값 출력 print(histogram[:10])

13. 이미지 축소 및 확대(Thumbnail)

이미지를 축소하거나 확대하면서 비율을 유지할 수 있습니다.

# 원본 비율을 유지하면서 최대 크기 (128, 128)로 축소 image.thumbnail((128, 128)) # 이미지 저장 image.save('thumbnail_example.jpg')

요약

Pillow는 이미지 처리에 필요한 다양한 기능을 제공하는 강력한 라이브러리입니다. 기본적인 이미지 열기, 저장부터 이미지 크기 조정, 자르기, 회전, 필터 적용, 텍스트 추가까지 폭넓은 작업을 쉽게 수행할 수 있습니다.

  • 설치: pip install Pillow
  • 이미지 열기 및 저장: Image.open(), image.save()
  • 크기 조정: image.resize()
  • 자르기: image.crop()
  • 회전: image.rotate()
  • 필터 적용: image.filter()
  • 색상 모드 변환: image.convert()
  • 미러링: image.transpose()
  • 합성: Image.blend()
  • 텍스트 추가: ImageDraw

댓글 쓰기

댓글 목록