2011-01-21 3 views

答えて

2

次に、あなたのテンプレートで、あなたはこのようなイメージのものを表示したいですこの場合、ブロブはイメージです。これは素晴らしいものです。ちょうどimages.get_serving_url(blob_key)を使用して、あなたは満足しています。私はこの機能を使って、信頼してくれました。画像を提供するのには最高です。 URLに=sxxを追加するだけで、xxが目的のピクセルサイズになります。自動的にイメージのサイズを変更し、それを提供します。

ブロブがイメージでない場合は、あなたは簡単に手を出せません。たぶんBlobReaderを使用して文字列表現を作成し、それを出力しますか?

イメージやテキストではない場合でも、HTMLに書きたいことはありますか?

+0

これはハンドラからどのように返されますか?表示されたURLまたは応答にラップされたURLを返すと、イメージが破損します。 src属性で "/ _ah/img/"をハードコードすると動作しますが、開発時のみ有効です。 –

+0

ハンドラから何を返すのですか?これをJSONとして送り返すことも、テンプレートをレンダリングすることもできます。このハンドラを使用して画像そのものを配信している場合は、画像URLにリダイレクトを送信してください。 –

+0

イメージの処理はうまく動作しますが、生成されたURLを返してsrc属性に配置しようとすると機能しませんでした。ハンドラのコードを使ってシンプルなJinjaフィルタを作成しましたが、これは完全に機能していました。ご協力いただきありがとうございます! –

1

このような任意のデータを表示するためのビルトインテンプレートタグはありません。

  1. アバターを画像として配信するためのリクエストハンドラを作成します。あなたの例に基づいて、要求ハンドラは画像データを取得するために挨拶を検索し、適切なContent-Type: image/jpeg(またはimage/pngまたはそれ以上の)ヘッダを送信してから、レスポンスストリームにBLOBデータを書き込みます。

    <img src="/show-avatar/{{ greeting.key().id() }}"> 
    
  2. は、BLOBデータを取り込み、エンコードするでしょうappropiate data URLを生成し、カスタムテンプレートタグ/テンプレートフィルタを書く:

    次に、あなたのテンプレートでは、このような画像を表示したいです生成しているHTMLドキュメントに画像データを直接格納します。

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

    テンプレートでこれらの線に沿って出力につながる:

    <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IAAAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1JREFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jqch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0vr4MkhoXe0rZigAAAABJRU5ErkJggg==" /> 
    
関連する問題

 関連する問題