2011-05-31 55 views
1

我正在使用PIL(Python Imaging Library)和Paste來製作一個非常簡單的網頁。我有一個返回值只是一個形象標籤的功能:從PIL動態提供圖像

def home(self): 
    return '<img src="photo" alt="photo"/>' 

而且我也有一個名爲照片是函數(理想)返回到放於img標籤的圖像:

def photo(self): 
    img = image_from_PIL # this part works 
    output = StringIO.StringIO() 
    img.save(output, "JPEG") # saves the image as a StringIO in output 
    final_img = output.getvalue() 
    output.close() 

    # then set headers['content-type'] = 'image/jpeg' (confirmed this works) 

    return [final_img] 

所以我知道圖像存在於字符串final_img中,內容類型是「image/jpeg」。我期望這個工作,但我得到的是尺寸的200個狀態OK效應初探0

我試過很多其他的一些東西,包括:

  • 轉換字符串到二進制和隨地吐痰了這一點
  • 內容長度在報頭中設置的字符串的長度(和x8因爲每個字符是8個比特)

如果有什麼差別,我的服務器使用uWSGI和nginx的

我不知道還有什麼要嘗試!謝謝你的幫助。

+1

爲什麼你用元final_img返回一個列表,而不是final_img本身? – Hyperboreus 2011-06-01 00:02:24

+0

所以我不能回答我自己的問題,但WOW非常感謝Hyperboreus。這工作!它在列表中的原因是因爲這就是我看到的所有WSGI示例中返回的字符串。出於某種原因,這工作。 – jakecar 2011-06-01 00:22:38

+0

我發佈了一個答案,與我的評論一樣,所以你可以關閉這個問題。很高興幫助你。 – Hyperboreus 2011-06-01 16:34:09

回答

1

不要返回一個列表與圖像,但圖像本身。

更換

return [final_img] 

return final_img