我試圖做的是有我的主塔應用程序動態生成基於一些數據的圖像,並以這樣的方式,它可以在瀏覽器中查看返回。從主塔
到目前爲止我生成我的形象是這樣的:
import Image, ImageDraw
image = Image.new("RGB", (width, height),"black")
img_out = ImageDraw.Draw(image)
img_out.polygon(...
img_out.text(...
#etc
的圖像被成功生成,甚至可以保存到文件中是這樣的:
img_out.save(filepath)
我的問題是,我不是試圖寫入磁盤,而是通過Pylons響應返回。根據關答案的another question我能夠遠遠地得到這樣的:
import FileApp
my_headers = [('Content-Disposition', 'attachment; filename=\"' + user_filename + '\"'), ('Content-Type', 'text/plain')]
file_app = FileApp(filepath, headers=my_headers)
return file_app(request.environ, self.start_reponse)
使用該解決方案,我可以拿我已經保存在服務器端的PNG文件並返回給用戶下載。但是,這裏有兩個問題。首先,我被迫將文件寫入磁盤,然後從磁盤提供,而不是直接從代碼中直接使用該圖像。第二個是它實際上是返回文件,因此用戶被迫下載它而不是在瀏覽器中查看它。
我要的是用戶是能查看該文件在他們的瀏覽器,而不是下載它自己。理想情況下,我不必將圖像保存到服務器端的磁盤上,但是我發現如果服務器或客戶端計算機上沒有它,它可能無法提供服務。
所以我的問題是這樣的。我是否可以直接從代碼提供圖像,以便用戶只需在瀏覽器中將圖像視爲對其請求的迴應?如果沒有,我可以將圖像保存到磁盤服務器端並從那裏提供,以便用戶可以在瀏覽器中看到圖像,而不會提示下載文件?
(對於什麼是值得我用Python 2.6.2和PasteScript 1.7.4.2)
我沒意識到你可以用這種方式返回緩衝區。這正是我所期待的,非常感謝。 –