2011-01-21 42 views

回答

2

在這種情況下,blob是一個很好的圖像。只需使用images.get_serving_url(blob_key),你很高興。我已經使用了這個功能,相信我,這對於提供圖片來說非常棒。只需附加=sxx即可,其中xx是您想要的像素大小。它會自動調整圖像大小並提供服務。

如果blob不是一個圖像,那麼你是一個簡單的出路運氣不好的人。也許使用BlobReader來進行字符串表示並輸出它?

如果它不是圖像或文本,但是,您可能想要寫入HTML?

+0

這是如何從處理程序返回?如果我返回包含在響應中的服務URL或URL,圖像會中斷。如果我在src屬性中對「/ _ah/img/」進行了硬編碼,它就可以工作,但只能在開發中使用。 – 2011-04-17 21:45:43

1

沒有用於顯示任意數據的內置模板標籤。我可以想到兩種方法:

  1. 爲服務頭像寫入請求處理程序作爲圖像。根據您的示例,請求處理程序只需查找問候語即可獲取圖像數據,發送適當的Content-Type: image/jpeg(或image/png或其他)標題,然後將blob數據寫入響應流。

    然後,在你的模板,你會像這樣顯示圖像:

    <img src="/show-avatar/{{ greeting.key().id() }}"> 
    
  2. 編寫自定義模板標籤/模板過濾器,是以BLOB數據,並生成一個適當的data URL,這將編碼圖像數據直接在您生成的HTML文檔中。

    然後,在你的模板,你會展示形象是這樣的:

    <img src="{{ greeting.avatar|dataurl }}"> 
    

    這將導致沿着這些線路中的模板輸出:

    <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IAAAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1JREFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jqch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0vr4MkhoXe0rZigAAAABJRU5ErkJggg==" />