Jawaban:
from PIL import Image
im = Image.open('whatever.png')
width, height = im.size
Menurut dokumentasi .
im.mode
. Karena PIL agak samar, Anda juga dapat menggunakan numpy:numpy.array(im).shape
.shape
hasil dalam pengembalian yang berbeda karena ketinggian adalah yang pertama dari array 2d, lalu lebar. Karena ituheight, width = np.array(im).shape
with
.
np.array(im).shape
TIDAK mengembalikan jumlah saluran, melainkan kembali height
dan width
!
Anda dapat menggunakan Bantal ( Situs Web , Dokumentasi , GitHub , PyPI ). Bantal memiliki antarmuka yang sama dengan PIL, tetapi berfungsi dengan Python 3.
$ pip install Pillow
Jika Anda tidak memiliki hak administrator (sudo di Debian), Anda dapat menggunakan
$ pip install --user Pillow
Catatan lain tentang instalasi ada di sini .
from PIL import Image
with Image.open(filepath) as img:
width, height = img.size
Ini membutuhkan 3,21 detik untuk 30336 gambar (JPG dari 31x21 hingga 424x428, data pelatihan dari National Data Science Bowl on Kaggle)
Ini mungkin alasan paling penting untuk menggunakan Bantal daripada menulis sendiri. Dan Anda harus menggunakan Pillow daripada PIL (python-imaging), karena itu berfungsi dengan Python 3.
Saya simpan scipy.ndimage.imread
karena informasinya masih di luar sana, tetapi perlu diingat:
imread sudah usang! imread sudah tidak digunakan lagi di SciPy 1.0.0, dan [sudah] dihapus di 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)
lebih cepat dari cv2.imread(filepath)
metode?
Sejak scipy
's imread
sudah ditinggalkan, penggunaan imageio.imread
.
pip install imageio
height, width, channels = imageio.imread(filepath).shape
Ini adalah contoh lengkap memuat gambar dari URL, membuat dengan PIL, mencetak ukuran dan mengubah ukuran ...
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)
Inilah cara Anda mendapatkan ukuran gambar dari URL yang diberikan dengan 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
Berikut ini memberikan dimensi serta saluran:
import numpy as np
from PIL import Image
with Image.open(filepath) as img:
shape = np.array(img).shape