Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Displaying dynamically generated images in Yesod

Tags:

haskell

yesod

I'm writing my first Yesod app. The application involves the user selecting to view a graph, dynamically generated based on data stored in a DB on the server. I know how to get the user request and create the image on the server's file system, but how do I create a response page presenting it?

P.S. As I'm using GnuPlot to generate the image, I only know how to write it as a file to the file system, but If you happen to know how to get the data in memory it'll probably be even better. Thanks,

like image 806
Uri Barenholz Avatar asked Aug 22 '11 12:08

Uri Barenholz


1 Answers

For a file on disk, you can use sendFile in your handler.

getImageR = do
    -- ... save image data to disk somewhere
    sendFile typeJpeg "/path/to/file.jpg"

For sending it from a ByteString in memory, use sendResponse.

getImageR = do
    bytes <- -- generate image data
    sendResponse (typePng, toContent bytes)

Make sure you specify the correct content type for your image.

like image 135
hammar Avatar answered Sep 20 '22 17:09

hammar