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