回答:
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)。PillowのインターフェースはPILと同じですが、Python 3で動作します。
$ pip install Pillow
管理者権限(Debianのsudo)がない場合は、
$ pip install --user Pillow
インストールに関するその他の注意事項はこちらです。
from PIL import Image
with Image.open(filepath) as img:
width, height = img.size
これには30336枚の画像に3.21秒必要でした(31x21から424x428までのJPG、KaggleのNational Data Science Bowlからのトレーニングデータ)
これはおそらく、自分で書いたものではなくPillowを使用する最も重要な理由です。また、PIL(python-imaging)の代わりにPillowを使用する必要があります。これは、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)
方法?
これは、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)
Python 3で指定されたURLから画像サイズを取得する方法は次のとおりです。
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