[python] PIL을 사용하여 사진 크기를 어떻게 얻습니까?

PIL 또는 다른 Python 라이브러리를 사용하여 그림 크기를 어떻게 구할 수 있습니까?



답변

from PIL import Image

im = Image.open('whatever.png')
width, height = im.size

설명서 에 따르면 .


답변

Pillow ( Website , Documentation , GitHub , PyPI )를 사용할 수 있습니다 . Pillow는 PIL과 동일한 인터페이스를 가지고 있지만 Python 3에서 작동합니다.

설치

$ pip install Pillow

관리자 권한이없는 경우 (Debian에서 sudo)

$ pip install --user Pillow

설치에 관한 기타 참고 사항은 여기에 있습니다 .

암호

from PIL import Image
with Image.open(filepath) as img:
    width, height = img.size

속도

이것은 (데이터를 훈련, 31×21에서 424×428으로 JPG를 30,336 이미지를 3.21 초 필요한 국가 데이터 과학 볼 Kaggle에)

이것은 아마도 자체 작성하는 대신 베개를 사용하는 가장 중요한 이유 일 것입니다. 그리고 파이썬 3에서 작동하기 때문에 PIL (python-imaging) 대신 Pillow를 사용해야합니다.

대안 # 1 : Numpy (더 이상 사용되지 않음)

나는 scipy.ndimage.imread정보가 여전히 존재하지만 계속 명심하십시오.

이미 사용되지 않습니다! imci는 SciPy 1.0.0에서 더 이상 사용되지 않으며 1.2.0에서 제거되었습니다.

import scipy.ndimage
height, width, channels = scipy.ndimage.imread(filepath).shape

대안 # 2 : 파이 게임

import pygame
img = pygame.image.load(filepath)
width = img.get_width()
height = img.get_height()


답변

이후 scipy의이 imread되지 않습니다, 사용 imageio.imread.

  1. 설치 – pip install imageio
  2. 사용하다 height, width, channels = imageio.imread(filepath).shape

답변

이것은 URL에서 이미지를로드하고 PIL로 작성하고 크기를 인쇄하고 크기를 조정하는 완전한 예제입니다 …

import requests
h = { 'User-Agent': 'Neo'}
r = requests.get("https://images.freeimages.com/images/large-previews/85c/football-1442407.jpg", headers=h)

from PIL import Image
from io import BytesIO
# create image from binary content
i = Image.open(BytesIO(r.content))


width, height = i.size
print(width, height)
i = i.resize((100,100))
display(i)


답변

파이썬 3에서 주어진 URL에서 이미지 크기를 얻는 방법은 다음과 같습니다.

from PIL import Image
import urllib.request
from io import BytesIO

file = BytesIO(urllib.request.urlopen('http://getwallpapers.com/wallpaper/full/b/8/d/32803.jpg').read())
im = Image.open(file)
width, height = im.size


답변

다음은 채널뿐만 아니라 차원도 제공합니다.

import numpy as np
from PIL import Image

with Image.open(filepath) as img:
    shape = np.array(img).shape


답변