web-dev-qa-db-fra.com

ValueError: Impossible de trouver un format pour lire le fichier spécifié en mode 'i'

J'essaie de lire un fichier png dans une application Python-Flask exécutée dans Docker et j'obtiens une erreur qui dit

ValueError: Impossible de trouver un format pour lire le fichier spécifié en mode 'i'

j'ai téléchargé un fichier en utilisant un fichier HTML et maintenant j'essaie de le lire pour un traitement ultérieur. je vois que scipy.misc.imread est obsolète et j'essaie de le remplacer par 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)

je reçois cette erreur:

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
7
Calcutta

J'ai eu exactement le même problème récemment, et le problème était un seul fichier corrompu. Le mieux est d'utiliser quelque chose comme PIL pour vérifier les mauvais fichiers.

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)
0
Dipan Ghosh

Ajoutez l'option "pilmode":

imageio.imread(filename,pilmode="RGB")

Ça a marché pour moi.

0

J'ai eu ce problème aujourd'hui et j'ai constaté que si je fermais le fichier avant de le lire dans imageio, le problème disparaissait.

L'erreur était:

File "/home/vinny/pvenvs/chess/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  ValueError: Could not find a format to read the specified file in mode 'i' 

Solution: Mettez file.close() avant images.append(imageio.imread(filename)), pas après.

0
Uncle Vinny