# 파이썬 pillow 라이브러리 사용법

- Author: @wolfsil
- Published: 2023-10-17
- Updated: 2023-10-17
- Source: http://blex.me/@wolfsil/%ED%8C%8C%EC%9D%B4%EC%8D%AC-pillow-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%EC%82%AC%EC%9A%A9%EB%B2%95
- Tags: python

---

# PILLOW 이미지 라이브러리 사용법

## 기초
----
 
임포트
```
from PIL import Image
```

이미지 로드, 사이즈, 보여주기
```
image = Image.open('12.png')

#사이즈
print(image.width)
print(image.height)
print(image.size) 

#보여주기
image.show()

#보여주기2
import matplotlib.pyplot as plt
plt.imshow(image)
```

이미지 조작
```

#이미지 오픈
image = Image.open('12.png')

#이미지 모드 변환
image = image.convert("RGBA")

#이미지 생성
canvas = Image.new("RGBA", (300, 300))

#크기 조작. LANCZOS, Bilinear 추천
image=image.resize(size=(512,512),resample=Image.LANCZOS) 

#이미지 필터링
from PIL import ImageFilter
image=image.filter(ImageFilter.BLUR)

#이미지 회전
image= image.rotate(90)


#이미지 저장
image.save("12.png")


#이미지 넘파이 변환
imageArray=np.array(image)


```
- 이미지 생성: mage.new(mode, size)
- 이미지 오픈: Image.open(path)
- 필터: ImageFilter에 모여있음


이미지 그리기
```
from PIL import Image, ImageDraw

#이미지 그리기
canvas = Image.new("RGB", (300, 300))
d = ImageDraw.Draw(canvas,mode="RGBA")
d.line([10, 10, 290, 10, 290, 290, 10, 290, 10, 10], width=2, fill=(0,255,0,10))
d.text((10, 10), "Draw this text")

#이미지 옮겨붙이기
image = Image.new("RGBA", (300, 300),color=(255,255,255,0))
canvas = Image.new('RGBA', (400,400), color=(127,251,25,255))
canvas.paste(image, (0,0)) #canvas에 이미지가 옮겨붙여짐(값복사)

#마스크
image = Image.new("RGBA", (300, 300),color=(255,0,0,300))
canvas = Image.new('RGBA', (400,400), color=(0,255,0,127))
mask=Image.new('RGBA', (300,300), color=(0,0,0,127))
canvas.paste(image,(0,0),mask=mask)


```
- ImageDraw에 이미지 그리는 함수가 모임
- 이미지 드로우 클래스는 이미지 클래스와 별개
- 이미지 드로우로 그린건 원본에 반영(canvas)
- 사이즈가 초과돼도 크기범위 내에 알아서 그림
- 마스크의 색은 무의미 하다. 오직 알파값만
