PIL
PIL 라이브러리
- Python Imaging Library
- 스웨덴 기업 Secret Lab AB가 1995년부터 개발, 2011년에 중단
- Pillow라는 이름으로 포크(fork)되어 현재까지 지속 중
- 이미지 파일 열기, 닫기, 변환 등 기본적인 기능 제공
이미지 열기
PIL 라이브러리
from PIL import Image
이미지 파일인 balloon.webp를 열기
img = Image.open("balloon.webp")
img 객체를 출력
img
이미지 파일의 형식을 나타내는 문자열을 반환
img.format
'WEBP'
이미지 파일의 크기
img.size
(1024, 1024)
이미지 파일의 크기를 나타내는 (가로, 세로) 형식의 튜플(tuple)을 반환 해당 코드를 실행하면, 이미지 파일의 가로와 세로 크기가 나타남
이미지 파일의 색상 모드
img.mode
'RGB'
- RGB: 빨강, 초록, 파랑 3가지 색을 사용하는 모드
- RGBA: 빨강, 초록, 파랑 3가지 색과 투명도(알파 채널)를 사용하는 모드
- L: 이미지를 흑백으로 표현하는 모드
- 각 픽셀의 색상은 0부터 255까지의 값으로 표현
- 0은 검은색, 255는 흰색을 의미
- CMYK: 색상을 시안(Cyan), 마젠타(Magenta), 노랑(Yellow), 검정(Black) 4가지 색으로 나타내는 모드
- 주로 인쇄를 위한 이미지 파일에 사용
이미지 파일의 크기 변경
이미지 파일의 크기를 가로와 세로 256으로 변경
img = img.resize((256, 256))
가로, 세로 크기를 절반으로
w, h = img.size
size = w // 2, h // 2
크기 변경
small = img.resize(size)
small
저장
small.save('small.png')
변환
이미지 파일을 상하반전
img.transpose(Image.FLIP_TOP_BOTTOM)
45도 회전
img.rotate(45)
모드를 흑백(L)으로 변환
img.convert("L")
흑백을 컬러(RGB)로 바꿀 수는 있으나, 색상이 새로 생기지는 않음(RGB로 표현된 검은색, 흰색, 회색 등이 됨)
RGB 분리
이미지 파일의 RGB(빨강, 초록, 파랑) 채널을 분리
red, green, blue = img.split()
red 채널을 흑백으로 보기
흰색은 빨강이 강한 곳, 검은 색은 빨강이 약한 곳
red
red 채널은 밝기 정보만 있음(L모드)
red.mode
'L'
빈 이미지 만들기
같은 크기의 흑백 모드를 갖는 새로운 이미지 객체를 생성
empty = Image.new('L', img.size)
Red 채널을 빨간색으로 보기
red 채널을 흑백 대신 흑-적으로 보기 채널1, 채널2, 채널3을 병합하여 RGB 모드의 새로운 이미지 객체를 생성
Image.merge("RGB", (red, empty, empty))
red 채널을 빨간색으로, 나머지 두 채널을 빈 이미지로(검은색)으로 설정 기존 이미지 파일의 red 채널을 빨간색으로 표현
필터
from PIL import ImageFilter
이미지를 흑백 모드로 변환
img1 = img.convert('L')
이미지에서 경계선을 검출하는 필터
img2 = img1.filter(ImageFilter.FIND_EDGES)
img2
이미지의 경계선을 강조하는 필터
img3 = img2.filter(ImageFilter.EDGE_ENHANCE)
img3
필터
흐리게
img.filter(ImageFilter.BLUR)
윤곽선
img.filter(ImageFilter.CONTOUR)