2014-10-15 3 views
19

Есть ли способ импортировать все изображения внутри каталога (известно расположение каталога).
Если это помогает, я уже нашел способ узнать длину каталога.
Что я не уверен в том, как импортировать изображения (используя PIL/Pillow) в список или словарь.Импорт изображений из каталога (Python)

+0

Возможно, вам это будет полезно: http://stackoverflow.com/questions/3207219/how-to-list-all-files-of-a-directory-in-python Это метод для перечисления всего файла в каталог, оттуда вы можете просто вызвать функцию чтения изображений для каждого. – Mike

+1

Майк дал вам решение найти все файлы - так как у вас есть все имена файлов, вы можете их открыть - иногда вам нужно думать! –

+0

эй Чарльз, ты здесь довольно новый, и я тоже ... одна вещь, которую я узнал, заключается в том, что чем проще людям помочь вам, тем больше отзывов вы получите. Все в порядке (IMHO), чтобы не знать, как программировать и по-прежнему задавать вопрос, но продемонстрировать усилия, придумав даже сломанную версию кода, люди будут счастливее. Мы здесь, как примеры, которые мы можем исправить, а не общие понятия! Я думаю, что это немного значит, чтобы понизить рейтинг нового пользователя, поэтому не обескураживайте! – user1269942

ответ

27

Я хотел бы начать с помощью Glob:

from PIL import Image 
import glob 
image_list = [] 
for filename in glob.glob('yourpath/*.gif'): #assuming gif 
    im=Image.open(filename) 
    image_list.append(im) 

затем делать то, что вам нужно сделать с вашим списком изображений (IMAGE_LIST).

+1

'image_list = map (Image.open, glob ('your/path/*. Gif'))' – jfs

+0

Более приятное решение, чем у меня (с использованием glob правильно), но это сложнее расширить для других типов изображений - если только вы требуется более сложное регулярное выражение. –

+0

обе комментарии хорошо. JFS: приятный и компактный ... Я бы использовал нечто похожее, но иногда людям легче учиться питону понимать что-то более читаемое, поэтому я пытаюсь и доставляю. Тони, да, независимо от того, как вы его нарезаете, будет немного уродства с размещением для разных расширений. – user1269942

11
from PIL import Image 
import os, os.path 

imgs = [] 
path = "/home/tony/pictures" 
valid_images = [".jpg",".gif",".png",".tga"] 
for f in os.listdir(path): 
    ext = os.path.splitext(f)[1] 
    if ext.lower() not in valid_images: 
     continue 
    imgs.append(Image.open(os.path.join(path,f)) 

Это должно работать - не проверено.

+0

@JFSebastian - спасибо за исправления - я был бы рад за то, что вы внесли эти изменения :-) –

+0

еще один способ проверить его: 'if f.lower(). Endswith (valid_images): append' (' valid_images 'должен быть кортежем в этом случае). – jfs

+0

@ J.F.Sebastian: правда с точки зрения использования 'endswith', но я думаю, что * лучше * использовать splitext, а затем сравнивать при тестировании расширения файла - он немного более явный. –

Смежные вопросы