Jika Anda juga ingin tahu jumlah saluran, Anda harus menggunakan im.mode. Karena PIL agak samar, Anda juga dapat menggunakan numpy:numpy.array(im).shape
Alex Kreimer
9
Catatan @AlexKreimer yang menggunakan .shapehasil dalam pengembalian yang berbeda karena ketinggian adalah yang pertama dari array 2d, lalu lebar. Karena ituheight, width = np.array(im).shape
Jack Hales
Silakan gunakan with.
Shital Shah
@AlexKreimer: np.array(im).shapeTIDAK mengembalikan jumlah saluran, melainkan kembali heightdan width!
Färid Alijani
@ FäridAlijani yakin, ia mengembalikan bentuk tensor, yang (mungkin) mencakup jumlah saluran. Jika Anda hanya mendapatkan 2 redup, itu mungkin berarti bahwa jumlah saluran adalah 1.
Alex Kreimer
77
Anda dapat menggunakan Bantal ( Situs Web , Dokumentasi , GitHub , PyPI ). Bantal memiliki antarmuka yang sama dengan PIL, tetapi berfungsi dengan Python 3.
Instalasi
$ pip install Pillow
Jika Anda tidak memiliki hak administrator (sudo di Debian), Anda dapat menggunakan
from PIL importImagewithImage.open(filepath)as img:
width, height = img.size
Mempercepat
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.
Alternatif # 1: Numpy (usang)
Saya simpan scipy.ndimage.imreadkarena 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.
Inilah cara Anda mendapatkan ukuran gambar dari URL yang diberikan dengan 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
Jawaban:
Menurut dokumentasi .
sumber
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 kembaliheight
danwidth
!Anda dapat menggunakan Bantal ( Situs Web , Dokumentasi , GitHub , PyPI ). Bantal memiliki antarmuka yang sama dengan PIL, tetapi berfungsi dengan Python 3.
Instalasi
Jika Anda tidak memiliki hak administrator (sudo di Debian), Anda dapat menggunakan
Catatan lain tentang instalasi ada di sini .
Kode
Mempercepat
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.
Alternatif # 1: Numpy (usang)
Saya simpan
scipy.ndimage.imread
karena informasinya masih di luar sana, tetapi perlu diingat:Alternatif # 2: Pygame
sumber
Image.open(filepath)
lebih cepat daricv2.imread(filepath)
metode?Sejak
scipy
'simread
sudah ditinggalkan, penggunaanimageio.imread
.pip install imageio
height, width, channels = imageio.imread(filepath).shape
sumber
Ini adalah contoh lengkap memuat gambar dari URL, membuat dengan PIL, mencetak ukuran dan mengubah ukuran ...
sumber
Inilah cara Anda mendapatkan ukuran gambar dari URL yang diberikan dengan Python 3:
sumber
Berikut ini memberikan dimensi serta saluran:
sumber