Information*/알면도움됨

PIL과 Pillow

ch4rli3kop 2019. 3. 11. 00:44
반응형

PIL과 Pillow

python에는 기본적으로 이미지 라이브러리가 존재하지 않다. 따라서 python에서 이미지를 다룰 경우 외부 라이브러리를 설치할 필요성이 생기는데, 널리 사용되는 라이브러리인 PIL에 대해 python2와 python3의 차이가 있어 이 글을 서술해본다.

먼저, PIL에 대해 말하자면 얘는 구닥다리다.. ㅠㅠ 별 생각없이 사용하고 있었는데, 마지막 릴리즈가 2009년이다. https://www.pythonware.com/products/pil/ status에는 python 3.X 버전에 대해서는 나중에 배포한다고 되어있지만, 마지막 커밋이 2011년이라니.. 사실상 개발이 중단되었다고 한다. 따라서 python3에서는 PIL을 사용할 수 없다. 또한 PIL은 오직 윈도우만 지원한다.

하지만, 커뮤니티 파워로 PIL에서 파생된 Pillow라는 후속 프로젝트가 나와, python3를 지원 및 데비안, 우분투 환경에서도 동작할 수 있게 되었다. Pillow는 실제 PIL fork라는 것을 표방한다. https://pillow.readthedocs.io/en/stable/

정리하자면, PIL는 지원을 중단한 구닥다리이고 Pillow가 PIL를 이어받아 업데이트되고 있으니 Pillow를 맘껏 사용하면 되겠다.

install

pip3 install Pillow

usage

from PIL import Image

img = Image.open('Exam.png')

print(img.size)
print(img.width)
print(img.height)
print(img.getpixel( (0,0) ))

Image.open()에는 파일 형식을 사용해야하기 때문에, 그냥 데이터를 바로 사용할 경우 io 라이브러리를 사용하여 쓸 수도 있다.

from PIL import Image
import io, urllib.request

data = urllib.request.urlopen('http://www.pythonchallenge.com/pc/def/oxygen.png').read()
img = Image.open(io.BytesIO(data))

row = [img.getpixel((x, img.height/2)) for x in range(0, img.width, 7)]
elem = [r for r, g, b, a in row if r==g==b]
print(''.join(map(chr, elem)))


반응형

'Information* > 알면도움됨' 카테고리의 다른 글

python으로 실행파일 입력 주기  (0) 2019.03.17
zip2john 설치  (0) 2019.03.13
Weather API 가 필요할 때  (0) 2019.03.08
색 찾을 때 유용한 사이트  (0) 2019.03.07
Atom syntax theme 잘 적용이 안될 때  (0) 2019.02.25