web-dev-qa-db-ja.com

PILで画像サイズを取得するにはどうすればいいですか?

どうやってPILや他のPythonライブラリで写真のような大きさの面を手に入れることができますか?

192
I159
from PIL import Image

im = Image.open('whatever.png')
width, height = im.size

によると ドキュメント

340
phimuemue

Pillow( WebサイトDocumentationGitHubPyPI )を使用できます。 PillはPILと同じインターフェースを持っていますが、Python 3で動作します。

Installation

$ 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、 National Data Science Bowl Kaggleからのトレーニングデータ)。

これはおそらく、自分で書いたものの代わりにPillowを使用する最も重要な理由です。 PIL(python-imaging)の代わりにPillowを使うべきです。Python3で動くからです。

代替案1:ナンプティ

import scipy.ndimage
height, width, channels = scipy.ndimage.imread(filepath).shape

代替案2:Pygame

import pygame
img = pygame.image.load(filepath)
width = img.get_width()
height = img.get_height()
63
Martin Thoma

scipyimreadは推奨されないため、imageio.imreadを使用してください。

  1. インストール - pip install imageio
  2. height, width, channels = imageio.imread(filepath).shapeを使う
3
bluesummers

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
0

これは、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)
0
prosti