Можем ли мы загрузить изображения в python из каталога без использования PIL?Какие есть другие методы? - PullRequest
0 голосов
/ 03 декабря 2018

Я собираюсь написать скрипт Python для загрузки изображений из каталога и изменения их размера, поэтому, когда я загружаю изображения из каталога, я попробовал оба эти метода;

Использование PIL:

from os import listdir
from PIL import Image as PImage
import split_folders
import os, os.path
#imgs.append(Image.open(os.path.join(path,image))

def loadImages(path):
    imagesList = listdir(path)
    loadedImages = []
    for image in imagesList:
        with open(os.path.join(path, image), 'rb') as i:
            img = PImage.open(i)
            loadedImages.append(img)
    return loadedImages

path = "./Inputs/"
imgs = loadImages(path)

for img in imgs:
    print(img)

без использования PIL:

import os

import numpy as np
import split_folders

def get_files_with_ext(path):
    file_list = []
    for file in os.listdir(path):
        file_path = os.path.join(path, file)  
        if file_path.endswith('png'):  
            file_list.append(file_path)
        if file_path.endswith('jpg'):  
            file_list.append(file_path)

    return file_list


imgs = get_files_with_ext("./Inputs")
for img in imgs:
    print(img)

Оба одинаковы?

1 Ответ

0 голосов
/ 03 декабря 2018

В первом примере вы создаете список loadedImages = [], к которому вы добавляете img, результат PImage.open(i), который является Image или PImage объектом, в соответствии с документация подушки .Во втором примере вы создаете file_list, к которому затем добавляете file_path к.

Первый список содержит открытые (но еще не загруженные) объекты изображений.Этот объект можно использовать для непосредственной загрузки и управления изображениями.

Во втором фрагменте у вас есть список строк, представляющих путь к файлу.Они должны быть сначала загружены как объекты изображений, прежде чем вы сможете делать что-либо еще.Однако этот второй подход можно использовать в качестве универсального метода для агрегирования путей к файлам определенного типа, которые впоследствии можно загружать и манипулировать.

Вам не нужно нужна Подушка дляоткройте файл.Вы можете просто открыть (). Read () файл - но тогда вы получите строку, которая представляет изображение в виде потока данных.Что вы хотите сделать с файлами после их загрузки?Если это связано с манипулированием изображением, то это оправдывает использование подушки для загрузки изображения.

...