Câu trả lời:
from PIL import Image
im = Image.open('whatever.png')
width, height = im.size
Theo tài liệu .
im.mode
. Vì PIL hơi khó hiểu, bạn cũng có thể sử dụng numpy:numpy.array(im).shape
.shape
kết quả trong các lợi nhuận khác nhau vì chiều cao là đầu tiên của mảng 2d, sau đó là chiều rộng. Do đóheight, width = np.array(im).shape
with
.
np.array(im).shape
KHÔNG trả về số lượng kênh, nó trả về height
và width
!
Bạn có thể sử dụng Gối ( Trang web , Tài liệu , GitHub , PyPI ). Gối có giao diện giống như PIL, nhưng hoạt động với Python 3.
$ pip install Pillow
Nếu bạn không có quyền quản trị viên (sudo trên Debian), bạn có thể sử dụng
$ pip install --user Pillow
Các ghi chú khác liên quan đến việc cài đặt ở đây .
from PIL import Image
with Image.open(filepath) as img:
width, height = img.size
Điều này cần 3,21 giây cho 30336 hình ảnh (JPG từ 31x21 đến 424x428, dữ liệu đào tạo từ National Data Science Bowl trên Kaggle)
Đây có lẽ là lý do quan trọng nhất để sử dụng Gối thay vì một cái gì đó tự viết. Và bạn nên sử dụng Gối thay vì PIL (hình ảnh trăn), vì nó hoạt động với Python 3.
Tôi giữ scipy.ndimage.imread
như thông tin vẫn còn đó, nhưng hãy ghi nhớ:
imread bị phản đối! imread bị phản đối trong SciPy 1.0.0 và [đã] bị xóa trong 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)
nhanh hơn so với cv2.imread(filepath)
phương pháp?
Từ scipy
's imread
bị phản đối, sử dụng imageio.imread
.
pip install imageio
height, width, channels = imageio.imread(filepath).shape
Đây là một ví dụ hoàn chỉnh tải hình ảnh từ URL, tạo bằng PIL, in kích thước và thay đổi kích thước ...
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)
Đây là cách bạn có được kích thước hình ảnh từ URL đã cho trong 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
Theo dõi cho kích thước cũng như các kênh:
import numpy as np
from PIL import Image
with Image.open(filepath) as img:
shape = np.array(img).shape