Как я могу получить размер изображения с PIL? - PullRequest
203 голосов
/ 22 июня 2011

Как получить размер сторон изображения с помощью PIL или любой другой библиотеки Python?

Ответы [ 4 ]

357 голосов
/ 22 июня 2011
from PIL import Image

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

Согласно документации .

64 голосов
/ 10 января 2016

Вы можете использовать подушку ( Веб-сайт , Документация , GitHub , PyPI ).Подушка имеет тот же интерфейс, что и PIL, но работает с Python 3.

Установка

$ pip install Pillow

Если у вас нет прав администратора (sudo в Debian), вы можете использовать

$ pip install --user Pillow

Другие примечания, касающиеся установки, здесь .

Код

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

Скорость

Для 30336 изображений потребовалось 3,21 секунды.(JPG с 31x21 по 424x428, обучающие данные из National Data Science Bowl на Kaggle)

Это, пожалуй, самая важная причина использовать Pillow вместо чего-то написанного самим собой.И вам следует использовать Pillow вместо PIL (python-imaging), потому что он работает с Python 3.

Альтернатива # 1: Numpy

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

Альтернатива # 2: Pygame

import pygame
img = pygame.image.load(filepath)
width = img.get_width()
height = img.get_height()
3 голосов
/ 25 ноября 2017

Поскольку scipy imread устарело, используйте imageio.imread.

  1. Установка - pip install imageio
  2. Использование height, width, channels = imageio.imread(filepath).shape
0 голосов
/ 23 марта 2019

Это полный пример загрузки изображения из 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)
...