Ответы:
from PIL import Image
im = Image.open('whatever.png')
width, height = im.size
Согласно документации .
im.mode
. Поскольку PIL немного загадочен, вы также можете использовать numpy:numpy.array(im).shape
.shape
приводит к разным возвращениям, так как высота - это сначала массив 2d, а затем ширина. Поэтомуheight, width = np.array(im).shape
with
.
np.array(im).shape
НЕ возвращает количество каналов, скорее возвращает height
и width
!
Вы можете использовать подушку ( сайт , документация , 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
Это потребовало 3,21 секунды для 30336 изображений (файлы JPG от 31x21 до 424x428, данные обучения от National Data Science Bowl на Kaggle)
Это, наверное, самая важная причина, чтобы использовать подушку вместо чего-то написанного самим собой. И вам следует использовать Pillow вместо PIL (python-imaging), потому что он работает с Python 3.
Я держу, scipy.ndimage.imread
поскольку информация все еще там, но имейте в виду:
imread устарела! imread устарела в SciPy 1.0.0 и [была] удалена в 1.2.0.
import scipy.ndimage
height, width, channels = scipy.ndimage.imread(filepath).shape
import pygame
img = pygame.image.load(filepath)
width = img.get_width()
height = img.get_height()
Image.open(filepath)
быстрее , чем cv2.imread(filepath)
метод?
Поскольку scipy
«s imread
является устаревшим, использование imageio.imread
.
pip install imageio
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)
Вот как вы получаете размер изображения по указанному URL в Python 3:
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