images on the web

C

chris

I'm creating a data plot and need to display the image to a web page.
What's the best way of doing this without having to save the image to
disk? I already have a mod_python script that outputs the data in
tabular format, but I haven't been able to find anything on adding a
generated image.
 
M

Matt Nordhoff

chris said:
I'm creating a data plot and need to display the image to a web page.
What's the best way of doing this without having to save the image to
disk? I already have a mod_python script that outputs the data in
tabular format, but I haven't been able to find anything on adding a
generated image.

You could use data: URIs [1].

For example, a 43-byte single pixel GIF becomes this URI:

<data:image/gif;base64,R0lGODlhAQABAIAAAP%2F%2F%2F%2F%2F%2F%2FyH5BAEAAAEALAAAAAABAAEAAAICTAEAOw%3D%3D>

They don't have universal browser support, but that might not be a
problem in this case.

As for generating them with Python, I'm not sure... I just used Hixie's
data: URI kitchen [2] for the above example.

[1] <http://tools.ietf.org/html/rfc2397>
[2] <http://software.hixie.ch/utilities/cgi/data/data>
--
 
M

Matt Nordhoff

Matt said:
chris said:
I'm creating a data plot and need to display the image to a web page.
What's the best way of doing this without having to save the image to
disk? I already have a mod_python script that outputs the data in
tabular format, but I haven't been able to find anything on adding a
generated image.

You could use data: URIs [1].

For example, a 43-byte single pixel GIF becomes this URI:

<data:image/gif;base64,R0lGODlhAQABAIAAAP%2F%2F%2F%2F%2F%2F%2FyH5BAEAAAEALAAAAAABAAEAAAICTAEAOw%3D%3D>

They don't have universal browser support, but that might not be a
problem in this case.

As for generating them with Python, I'm not sure... I just used Hixie's
data: URI kitchen [2] for the above example.

[1] <http://tools.ietf.org/html/rfc2397>
[2] <http://software.hixie.ch/utilities/cgi/data/data>

Oh.. As <http://bitworking.org/news/Sparklines_in_data_URIs_in_Python>
shows, the reason I couldn't find a data: URI Python library is because
they're utterly trivial to generate:

import base64
import urllib

raw_data = create_gif()
uri = 'data:image/gif;base64,' + urllib.quote(base64.b64encode(raw_data))

(And it's even simpler if you leave out the base64-encoding.)
--
 
M

Michael Ströder

Matt said:
Matt said:
You could use data: URIs [1].

For example, a 43-byte single pixel GIF becomes this URI:

<data:image/gif;base64,R0lGODlhAQABAIAAAP%2F%2F%2F%2F%2F%2F%2FyH5BAEAAAEALAAAAAABAAEAAAICTAEAOw%3D%3D>

They don't have universal browser support, but that might not be a
problem in this case.

As for generating them with Python, I'm not sure... I just used Hixie's
data: URI kitchen [2] for the above example.

[1] <http://tools.ietf.org/html/rfc2397>
[2] <http://software.hixie.ch/utilities/cgi/data/data>

Oh.. As <http://bitworking.org/news/Sparklines_in_data_URIs_in_Python>
shows, the reason I couldn't find a data: URI Python library is because
they're utterly trivial to generate:

import base64
import urllib

raw_data = create_gif()
uri = 'data:image/gif;base64,' + urllib.quote(base64.b64encode(raw_data))

(And it's even simpler if you leave out the base64-encoding.)

The caveat with URL schema data: is that the amount of data to be
transferred is significantly higher than including HTML tag <img src="">
in your HTML source and let the browser fetch the raw binary image data
in a separate HTTP request (you also have to serve from your web
application).

Ciao, Michael.
 
M

Michael Ströder

chris said:
I'm creating a data plot and need to display the image to a web page.
What's the best way of doing this without having to save the image to
disk? I already have a mod_python script that outputs the data in
tabular format, but I haven't been able to find anything on adding a
generated image.

Does your web application has session handling? Then you could save the
image in the session and server the separate HTTP request sent by the
browser.

Ciao, Michael.
 
C

chris

Matt said:
Matt said:
You could use data: URIs [1].
For example, a 43-byte single pixel GIF becomes this URI:
<data:image/gif;base64,R0lGODlhAQABAIAAAP%2F%2F%2F%2F%2F%2F%2FyH5BAEAAAEALAAAAAABAAEAAAICTAEAOw%3D%3D>
They don't have universal browser support, but that might not be a
problem in this case.
As for generating them with Python, I'm not sure... I just used Hixie's
data: URI kitchen [2] for the above example.
[1] <http://tools.ietf.org/html/rfc2397>
[2] <http://software.hixie.ch/utilities/cgi/data/data>
Oh.. As <http://bitworking.org/news/Sparklines_in_data_URIs_in_Python>
shows, the reason I couldn't find a data: URI Python library is because
they're utterly trivial to generate:
import base64
import urllib
raw_data = create_gif()
uri = 'data:image/gif;base64,' + urllib.quote(base64.b64encode(raw_data))
(And it's even simpler if you leave out the base64-encoding.)

The caveat with URL schema data: is that the amount of data to be
transferred is significantly higher than including HTML tag <img src="">
in your HTML source and let the browser fetch the raw binary image data
in a separate HTTP request (you also have to serve from your web
application).

Ciao, Michael.

This sounds like the way I want to go, it's just a matter of figuring
it out. Is it just a matter of putting a function call in an img tag?

I'll give the URI thing a try, too,
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,432
Messages
2,571,681
Members
48,796
Latest member
Greg L.

Latest Threads

Top