Jeśli chcesz również poznać liczbę kanałów, powinieneś użyć im.mode. Ponieważ PIL jest nieco tajemniczy, możesz także użyć numpy:numpy.array(im).shape
Alex Kreimer
9
Uwaga @AlexKreimer, że użycie .shapepowoduje różne zwroty, ponieważ wysokość jest pierwszą z tablicy 2d, a następnie szerokością. Dlategoheight, width = np.array(im).shape
Jack Hales
Proszę używać with.
Shital Shah
@AlexKreimer: np.array(im).shapeNIE zwraca liczby kanałów, raczej zwraca heighti width!
Färid Alijani
@ FäridAlijani, na pewno zwraca kształt tensora, który (ewentualnie) obejmuje liczbę kanałów. Jeśli dostaniesz tylko 2 przyciemnienia, prawdopodobnie oznacza to, że liczba kanałów wynosi 1.
from PIL importImagewithImage.open(filepath)as img:
width, height = img.size
Prędkość
Wymagało to 3,21 sekundy na 30336 zdjęć (JPG od 31x21 do 424x428, dane treningowe z National Data Science Bowl na Kaggle)
Jest to prawdopodobnie najważniejszy powód, aby używać poduszki zamiast czegoś napisanego samodzielnie. I powinieneś używać Pillow zamiast PIL (obrazowanie python), ponieważ działa z Python 3.
Alternatywa nr 1: Numpy (przestarzałe)
Trzymam, scipy.ndimage.imreadponieważ informacje są nadal dostępne, ale pamiętaj:
odczytywanie jest przestarzałe! Imread jest przestarzały w SciPy 1.0.0, a [został] usunięty w 1.2.0.
Oto jak uzyskać rozmiar obrazu z podanego adresu URL w Python 3:
from PIL importImageimport urllib.request
from io importBytesIO
file =BytesIO(urllib.request.urlopen('http://getwallpapers.com/wallpaper/full/b/8/d/32803.jpg').read())
im =Image.open(file)
width, height = im.size
Odpowiedzi:
Zgodnie z dokumentacją .
źródło
im.mode
. Ponieważ PIL jest nieco tajemniczy, możesz także użyć numpy:numpy.array(im).shape
.shape
powoduje różne zwroty, ponieważ wysokość jest pierwszą z tablicy 2d, a następnie szerokością. Dlategoheight, width = np.array(im).shape
with
.np.array(im).shape
NIE zwraca liczby kanałów, raczej zwracaheight
iwidth
!Możesz użyć Pillow ( strona internetowa , dokumentacja , GitHub , PyPI ). Poduszka ma taki sam interfejs jak PIL, ale współpracuje z Python 3.
Instalacja
Jeśli nie masz uprawnień administratora (sudo na Debianie), możesz użyć
Inne uwagi dotyczące instalacji są tutaj .
Kod
Prędkość
Wymagało to 3,21 sekundy na 30336 zdjęć (JPG od 31x21 do 424x428, dane treningowe z National Data Science Bowl na Kaggle)
Jest to prawdopodobnie najważniejszy powód, aby używać poduszki zamiast czegoś napisanego samodzielnie. I powinieneś używać Pillow zamiast PIL (obrazowanie python), ponieważ działa z Python 3.
Alternatywa nr 1: Numpy (przestarzałe)
Trzymam,
scipy.ndimage.imread
ponieważ informacje są nadal dostępne, ale pamiętaj:Alternatywa # 2: Pygame
źródło
Image.open(filepath)
szybszy niżcv2.imread(filepath)
metoda?Ponieważ
scipy
„simread
jest przestarzała, użycieimageio.imread
.pip install imageio
height, width, channels = imageio.imread(filepath).shape
źródło
To kompletny przykład ładowania obrazu z adresu URL, tworzenia za pomocą PIL, drukowania rozmiaru i zmiany rozmiaru ...
źródło
Oto jak uzyskać rozmiar obrazu z podanego adresu URL w Python 3:
źródło
Poniżej podano wymiary oraz kanały:
źródło