Ein Bild in der Flask-App anzeigen

Salman Mehmood 21 Dezember 2022
  1. Ein Bild in der Flask-App anzeigen
  2. Zeigen Sie mehrere Bilder in der Flask-App an
Ein Bild in der Flask-App anzeigen

Mit dieser Erklärung lernen wir, wie wir ein Bild zu einer Webseite hinzufügen und wie wir mehrere Bilder in der Flask-App hochladen oder anzeigen können.

Ein Bild in der Flask-App anzeigen

In diesem Abschnitt laden wir ein Bild auf unsere Webseite hoch, und der erste Schritt besteht darin, zwei anfängliche Verzeichnisse zu erstellen, statisch und Vorlagen. Wir werden ein neues Verzeichnis erstellen, das unsere Bilder im Ordner statisch enthält.

Der nächste Schritt besteht darin, die Adresse dieses Ordners IMG abzurufen, den wir im Ordner static erstellt haben. Also müssen wir die Bibliothek os importieren und damit den Ordnerpfad IMG in einer neuen Variablen namens IMG_FOLDER speichern.

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

Wir müssen diese Adresse an den Upload-Ordner der Anwendungskonfiguration weitergeben. Also müssen wir in UPLOAD_FOLDER gehen und die Adresse zuweisen, wo wir die Bilder anschauen wollen.

app.config["UPLOAD_FOLDER"] = IMG_FOLDER

Im nächsten Schritt verbinden wir den Pfad mit UPLOAD_FOLDER mit einem Bildnamen, den wir auf der Webseite anzeigen möchten. Diese Adresse speichern wir in der Variable Flask_Logo innerhalb der Funktion Display_IMG().

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

Als nächstes müssen wir ein Argument in render_template() definieren und die Variable Flask_Logo als Wert an dieses übergeben.

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)

Jetzt müssen wir zum Ordner templates gehen und eine index.html-Datei erstellen, und in diese Datei schreiben wir einfachen HTML-Code. Wir übergeben nur die Variable user_image im img-Tag, das wir in render_template() definiert haben.

Dies ist der Quellcode, der in der HTML-Datei für dieses Beispiel verwendet wird:

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

Wenn wir diese App ausführen, wird das Bild richtig angezeigt.

Flaskanzeige Bildausgabe 1

Zeigen Sie mehrere Bilder in der Flask-App an

Jetzt werden wir mehrere Bilder aus dem Ordner IMG hinzufügen und Ihnen zeigen, wie Sie alle anzeigen können, also beginnen wir damit, eine Liste der Bilder zu erstellen. Wir werden diese Liste innerhalb der Funktion erstellen, die alle Assets eines Verzeichnisses enthält, indem wir die Funktion listdir() verwenden, und der Listenname wird IMG_LIST sein.

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

Jetzt erstellen wir eine Schleife für alle Bilder, verwenden das Listenverständnis und speichern es in derselben Variablen namens 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)

Der nächste Schritt besteht darin, einige Änderungen an der HTML-Datei vorzunehmen. Anstatt sie einzeln weiterzugeben, werden wir sie durch die Schleife anzeigen, indem wir eine imagelist-Variable verwenden, die eine Liste mehrerer Bilder ist.

Jetzt werden wir ein img-Tag einfügen und innerhalb dieses Tags das url_for-Tag verwenden, um statische Dateien zu erhalten. url_for() nimmt zwei Attribute: eines wird static sein, und das zweite wird der filename sein, und wir werden ihm ein Element i übergeben, das wir durch die Schleife iterieren.

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

Wenn wir den Server ausführen und zum Browser gehen, können wir die hier angezeigten Bilder sehen.

Flaskanzeige Bildausgabe 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