Відповіді:
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 on 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