2010-08-20 2 views
3

У меня есть список (пути) изображений, сохраненных локально. Как я могу найти самое большое изображение из них? Я не имею в виду размер файла, но размеры.Найти самые большие размеры изображения из списка

Все изображения в обычных веб-совместимых форматах - JPG, GIF, PNG и т.д.

Спасибо.

ответ

3

Использование Python Imaging Library (PIL). Что-то вроде этого:

from PIL import Image 
filenames = ['/home/you/Desktop/chstamp.jpg', '/home/you/Desktop/something.jpg'] 
sizes = [Image.open(f, 'r').size for f in filenames] 
max(sizes) 

Update (Спасибо delnan):

Заменить последние две строки выше фрагмента кода с:

max(Image.open(f, 'r').size for f in filenames) 

Update 2

ОП хочет найти индекс файла, соответствующий самому большому dim ensions. Это требует некоторой помощи от numpy. Смотрите ниже:

from numpy import array 
image_array = array([Image.open(f, 'r').size for f in filenames]) 
print image_array.argmax() 
+0

Это должно быть действительно 'макс (Image.open (е,«г») размер для ф. в именах файлов) '(выражение генератора!). – delnan

+0

Спасибо Маной. Мне нравится ваш метод, использующий лямбда-функции. В этом примере я могу получить индекс/местоположение самого крупного изображения? Я всегда мог написать цикл 'for', чтобы перебирать все это, но мой метод не такой чистый и лаконичный, как ваш. –

+0

@Mridang: Эх, лямбда? Разве вы не имеете в виду понимание списка? – delnan

-1
import Image 

src = Image.open(image) 
size = src.size 

размер будет кортеж с размерами изображения (WITDH и высота)

0

Вы должны PIL.

from PIL import Image 

img = Image.open(image_file) 
width, height = img.size 

После того как вы размер одного изображения, проверяя весь список и выбрать больше одного не проблема.

7

Предполагая, что «размер» изображения является его площадь:

from PIL import Image 

def get_img_size(path): 
    width, height = Image.open(path).size 
    return width*height 

largest = max(the_paths, key=get_img_size)