Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Serving image with flask

Tags:

python

html

flask

I have a program which generates an image. Now I want to use Flask to make this picture accessible to other users, but I can’t display this image with the following code:

#!/usr/bin/python2
#coding: utf-8

from flask import *
app = Flask(__name__)

#app.run(host='0.0.0.0')

@app.route('/')
def index():
    return render_template('hello.html')

if __name__ == '__main__':
    app.run(debug=True,host='0.0.0.0')

My template hello.html is:

<!doctype html>
<title>Hello from Flask</title>
<h1>Hello World!</h1>
<img src="./weather-plot.png">

When I run this program and visit the page, I see this:

192.168.0.61 - - [10/Jul/2013 10:22:09] "GET / HTTP/1.1" 200 -
192.168.0.61 - - [10/Jul/2013 10:22:09] "GET /weather-plot.png HTTP/1.1" 200 -

And in my browser I see the title, but not the picture. What’s wrong?

By the way, is there a better method to display a picture without anything else? Maybe I don’t have to use a template?

like image 789
Shan-x Avatar asked Jul 10 '13 08:07

Shan-x


People also ask

How do I return an image in Flask API?

To return image stored in database with Python Flask, we can use the make_response function. to call make_response on the image_binary image. Then we call response.


1 Answers

Are you sure the image is indeed in the location ./, i.e. in the root of your project? In any case, it is better to use Flask's url_for() method to determine URLs (see http://flask.pocoo.org/docs/api/#flask.url_for) This makes sure that when you move things around, the URLs don't break.

like image 129
Ludo Avatar answered Oct 03 '22 19:10

Ludo