Wenn Sie auch die Anzahl der Kanäle wissen möchten, sollten Sie verwenden im.mode. Da PIL etwas kryptisch ist, können Sie auch numpy verwenden:numpy.array(im).shape
Alex Kreimer
9
Beachten Sie @AlexKreimer, dass die Verwendung .shapezu unterschiedlichen Rückgaben führt, da die Höhe das erste des 2d-Arrays und dann die Breite ist. Deshalbheight, width = np.array(im).shape
Jack Hales
Bitte benutzen with.
Shital Shah
@AlexKreimer: np.array(im).shapegibt NICHT die Anzahl der Kanäle zurück, sondern heightund width!
Färid Alijani
@ FäridAlijani sicher, es gibt die Form eines Tensors zurück, der (möglicherweise) die Anzahl der Kanäle enthält. Wenn Sie nur 2 Dims erhalten, bedeutet dies wahrscheinlich, dass die Anzahl der Kanäle 1 beträgt.
Wenn Sie keine Administratorrechte haben (sudo on Debian), können Sie verwenden
$ pip install --user Pillow
Weitere Hinweise zur Installation finden Sie hier .
Code
from PIL importImagewithImage.open(filepath)as img:
width, height = img.size
Geschwindigkeit
Dies dauerte 3,21 Sekunden für 30336 Bilder (JPGs von 31 x 21 bis 424 x 428, Trainingsdaten von National Data Science Bowl auf Kaggle)
Dies ist wahrscheinlich der wichtigste Grund, Pillow anstelle von etwas Selbstgeschriebenem zu verwenden. Und Sie sollten Pillow anstelle von PIL (Python-Imaging) verwenden, da es mit Python 3 funktioniert.
Alternative Nr. 1: Numpy (veraltet)
Ich behalte, scipy.ndimage.imreadda die Informationen immer noch da draußen sind, aber denke daran:
imread ist veraltet! imread ist in SciPy 1.0.0 veraltet und [wurde] in 1.2.0 entfernt.
Dies ist ein vollständiges Beispiel für das Laden eines Bildes von einer URL, das Erstellen mit PIL, das Drucken der Größe und das Ändern der Größe ...
import requests
h ={'User-Agent':'Neo'}
r = requests.get("https://images.freeimages.com/images/large-previews/85c/football-1442407.jpg", headers=h)from PIL importImagefrom io importBytesIO# 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)
So erhalten Sie die Bildgröße von der angegebenen URL in 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
Antworten:
Laut Dokumentation .
quelle
im.mode
. Da PIL etwas kryptisch ist, können Sie auch numpy verwenden:numpy.array(im).shape
.shape
zu unterschiedlichen Rückgaben führt, da die Höhe das erste des 2d-Arrays und dann die Breite ist. Deshalbheight, width = np.array(im).shape
with
.np.array(im).shape
gibt NICHT die Anzahl der Kanäle zurück, sondernheight
undwidth
!Sie können Pillow ( Website , Dokumentation , GitHub , PyPI) verwenden ) verwenden. Pillow hat die gleiche Oberfläche wie PIL, funktioniert jedoch mit Python 3.
Installation
Wenn Sie keine Administratorrechte haben (sudo on Debian), können Sie verwenden
Weitere Hinweise zur Installation finden Sie hier .
Code
Geschwindigkeit
Dies dauerte 3,21 Sekunden für 30336 Bilder (JPGs von 31 x 21 bis 424 x 428, Trainingsdaten von National Data Science Bowl auf Kaggle)
Dies ist wahrscheinlich der wichtigste Grund, Pillow anstelle von etwas Selbstgeschriebenem zu verwenden. Und Sie sollten Pillow anstelle von PIL (Python-Imaging) verwenden, da es mit Python 3 funktioniert.
Alternative Nr. 1: Numpy (veraltet)
Ich behalte,
scipy.ndimage.imread
da die Informationen immer noch da draußen sind, aber denke daran:Alternative Nr. 2: Pygame
quelle
Image.open(filepath)
schneller alscv2.imread(filepath)
Methode?Da
scipy
'simread
veraltet ist, verwenden Sieimageio.imread
.pip install imageio
height, width, channels = imageio.imread(filepath).shape
quelle
Dies ist ein vollständiges Beispiel für das Laden eines Bildes von einer URL, das Erstellen mit PIL, das Drucken der Größe und das Ändern der Größe ...
quelle
So erhalten Sie die Bildgröße von der angegebenen URL in Python 3:
quelle
Das Folgende gibt Dimensionen sowie Kanäle an:
quelle