greeting.avatar = db.Blob(avatar)
ブロブ(ここでは画像)を表示するテンプレートタグとは何ですか?
greeting.avatar = db.Blob(avatar)
ブロブ(ここでは画像)を表示するテンプレートタグとは何ですか?
で
次に、あなたのテンプレートで、あなたはこのようなイメージのものを表示したいですこの場合、ブロブはイメージです。これは素晴らしいものです。ちょうどimages.get_serving_url(blob_key)
を使用して、あなたは満足しています。私はこの機能を使って、信頼してくれました。画像を提供するのには最高です。 URLに=sxx
を追加するだけで、xx
が目的のピクセルサイズになります。自動的にイメージのサイズを変更し、それを提供します。
ブロブがイメージでない場合は、あなたは簡単に手を出せません。たぶんBlobReader
を使用して文字列表現を作成し、それを出力しますか?
イメージやテキストではない場合でも、HTMLに書きたいことはありますか?
このような任意のデータを表示するためのビルトインテンプレートタグはありません。
アバターを画像として配信するためのリクエストハンドラを作成します。あなたの例に基づいて、要求ハンドラは画像データを取得するために挨拶を検索し、適切なContent-Type: image/jpeg
(またはimage/png
またはそれ以上の)ヘッダを送信してから、レスポンスストリームにBLOBデータを書き込みます。
<img src="/show-avatar/{{ greeting.key().id() }}">
は、BLOBデータを取り込み、エンコードするでしょうappropiate data URLを生成し、カスタムテンプレートタグ/テンプレートフィルタを書く:
次に、あなたのテンプレートでは、このような画像を表示したいです生成しているHTMLドキュメントに画像データを直接格納します。
<img src="{{ greeting.avatar|dataurl }}">
テンプレートでこれらの線に沿って出力につながる:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IAAAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1JREFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jqch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0vr4MkhoXe0rZigAAAABJRU5ErkJggg==" />
これはハンドラからどのように返されますか?表示されたURLまたは応答にラップされたURLを返すと、イメージが破損します。 src属性で "/ _ah/img/"をハードコードすると動作しますが、開発時のみ有効です。 –
ハンドラから何を返すのですか?これをJSONとして送り返すことも、テンプレートをレンダリングすることもできます。このハンドラを使用して画像そのものを配信している場合は、画像URLにリダイレクトを送信してください。 –
イメージの処理はうまく動作しますが、生成されたURLを返してsrc属性に配置しようとすると機能しませんでした。ハンドラのコードを使ってシンプルなJinjaフィルタを作成しましたが、これは完全に機能していました。ご協力いただきありがとうございます! –