ValueError: Не удалось найти формат для чтения указанного файла в режиме 'i' - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь прочитать файл png в приложение python-flask, работающее в Docker, и получаю сообщение об ошибке

ValueError: Не удалось найти формат для чтения указанного файла в режиме 'Я'

Я загрузил файл, используя файл HTML, и теперь я пытаюсь прочитать его для дальнейшей обработки. я вижу, что scipy.misc.imread устарел, и я пытаюсь заменить его на imageio.imread

if request.method=='POST':
    file = request.files['image']
    if not file: 
        return render_template('index.html', label="No file")
    #img = misc.imread(file)
    img = imageio.imread(file)

я получаю эту ошибку:

File "./appimclass.py", line 34, in make_prediction

img = imageio.imread(file)

File "/usr/local/lib/python3.6/site-packages/imageio/core/functions.py", line 221, in imread

reader = read(uri, format, "i", **kwargs)

File "/usr/local/lib/python3.6/site-packages/imageio/core/functions.py", line 139, in get_reader

"Could not find a format to read the specified file " "in mode %r" % mode

Ответы [ 2 ]

0 голосов
/ 28 апреля 2019

Разное, но в случае полезно.У меня была идентичная ошибка в другой библиотеке (skimage), и решением было добавить дополнительный параметр 'plugin', например, так:

image = io.imread(filename,plugin='matplotlib')
0 голосов
/ 02 апреля 2019

Недавно возникла та же самая проблема, и проблема была в одном поврежденном файле.Лучше всего использовать что-то вроде PIL для проверки плохих файлов.

import os
from os import listdir
from PIL import Image

dir_path = "/path/"


for filename in listdir(dir_path):
    if filename.endswith('.jpg'):
        try:
            img = Image.open(base_dir+"\\"+filename) # open the image file
            img.verify() # verify that it is, in fact an image
        except (IOError, SyntaxError) as e:
            print('Bad file:', filename)
            #os.remove(base_dir+"\\"+filename) (Maybe)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...