Afficher une image dans l'application Flask

Salman Mehmood 21 décembre 2022
  1. Afficher une image dans l’application Flask
  2. Afficher plusieurs images dans l’application Flask
Afficher une image dans l'application Flask

Nous apprendrons, avec cette explication, comment nous pouvons ajouter une image à une page Web et comment nous pouvons télécharger ou afficher plusieurs images dans l’application Flask.

Afficher une image dans l’application Flask

Dans cette section, nous allons télécharger une image sur notre page Web, et la première étape consiste à créer deux répertoires initiaux, static et templates. Nous allons créer un nouveau répertoire qui contiendra nos images à l’intérieur du répertoire static.

L’étape suivante consiste à obtenir l’adresse de ce dossier IMG que nous avons créé dans le dossier static. Nous devons donc importer la bibliothèque os et l’utiliser pour enregistrer le chemin du dossier IMG dans une nouvelle variable appelée IMG_FOLDER.

IMG_FOLDER = os.path.join("static", "IMG")

Nous devrons transmettre cette adresse au dossier de téléchargement de la configuration de l’application. Nous devons donc aller dans UPLOAD_FOLDER et attribuer l’adresse où nous voulons regarder les images.

app.config["UPLOAD_FOLDER"] = IMG_FOLDER

Dans l’étape suivante, nous joindrons le chemin en utilisant UPLOAD_FOLDER avec un nom d’image que nous voulons afficher sur la page Web. Nous stockerons cette adresse dans la variable Flask_Logo à l’intérieur de la fonction Display_IMG().

Flask_Logo = os.path.join(app.config["UPLOAD_FOLDER"], "flask-logo.png")

Ensuite, nous devrons définir un argument à l’intérieur du render_template() et lui transmettre la variable Flask_Logo en tant que valeur.

from flask import Flask, render_template
import os

app = Flask(__name__)

IMG_FOLDER = os.path.join("static", "IMG")

app.config["UPLOAD_FOLDER"] = IMG_FOLDER


@app.route("/")
def Display_IMG():
    Flask_Logo = os.path.join(app.config["UPLOAD_FOLDER"], "flask-logo.png")
    return render_template("index.html", user_image=Flask_Logo)


if __name__ == "__main__":
    app.run(debug=True)

Maintenant, nous devrons aller dans le dossier templates et créer un fichier index.html, et à l’intérieur de ce fichier, nous allons écrire du code HTML de base. Nous ne passerons que la variable user_image dans la balise img que nous avons définie dans le render_template().

Voici le code source utilisé dans le fichier HTML pour cet exemple :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello Worl!</title>
</head>
<body>
<h1>Hello World!</h1>
 <center><h3>Flask Logo</h3><img src="{{ user_image }}" alt="Mike" height="240px" width="300px"></center>
</body>
</html>

Lorsque nous exécuterons cette application, nous verrons l’image s’afficher correctement.

Sortie d&rsquo;image d&rsquo;affichage Flask 1

Afficher plusieurs images dans l’application Flask

Nous allons maintenant ajouter plusieurs images du dossier IMG et vous montrer comment vous pouvez toutes les afficher, alors commençons par faire une liste des images. Nous allons créer cette liste à l’intérieur de la fonction qui contiendra tous les actifs d’un répertoire à l’aide de la fonction listdir(), et le nom de la liste sera IMG_LIST.

IMG_LIST = os.listdir("static/IMG")

Nous allons maintenant créer une boucle pour toutes les images, et nous allons utiliser la compréhension de liste et la stocker dans la même variable appelée IMG_LIST.

from flask import Flask, render_template
import os

app = Flask(__name__)

IMG_FOLDER = os.path.join("static", "IMG")

app.config["UPLOAD_FOLDER"] = IMG_FOLDER


@app.route("/")
def Display_IMG():
    IMG_LIST = os.listdir("static/IMG")
    IMG_LIST = ["IMG/" + i for i in IMG_LIST]
    return render_template("index.html", imagelist=IMG_LIST)


if __name__ == "__main__":
    app.run(debug=True)

L’étape suivante consiste à apporter quelques modifications au fichier HTML. Au lieu de les passer une par une, nous allons les afficher à travers la boucle à l’aide d’une variable imagelist qui est une liste de plusieurs images.

Maintenant, nous allons mettre une balise img, et à l’intérieur de cette balise, nous allons utiliser la balise url_for pour obtenir des fichiers statiques. url_for prendra deux attributs : l’un sera static, et le second sera le filename, et nous lui passerons un élément i que nous itérerons dans la boucle.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello Worl!</title>
</head>
<body>
<h1>The Multiple Images</h1>
    {% for i in imagelist %}
    <img src = "{{ url_for('static', filename=i)}}">
    {% endfor %}
</body>
</html>

Lorsque nous exécutons le serveur et que nous accédons au navigateur, nous pouvons voir les multiples images affichées ici.

Sortie d&rsquo;image d&rsquo;affichage Flask 2

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn