これの例を知っている人はいますか?Google のドキュメントで見つけることができませんでした。
4 に答える
ドキュメントにもかかわらず、私もしばらく混乱していました。
よく理解できたので (と思います!)、例を示します。
get_serving_url()
はgoogle.appengine.ext.blobstore
クラス内にあり、1 つの位置引数、BlobKey
.
ABlobKey
は文字列から構築できます: blobstore.BlobKey('this is the key')
.
これで、 の基本的な実装に必要なすべてが得られますget_serving_url()
。
from google.appengine.ext.blobstore import BlobKey
from google.appengine.api.images import get_serving_url
key = BlobKey('imagekey')
url = get_serving_url(key)
これまでのところ、すべて元気でダンディです。
文書化されているように、この関数は 3 つのキーワード引数もとります。これらはsize
、crop
、secure_url
、およびrpc
です。
secure_url = True
(default, )https
の代わりに単純に URL を返しますhttp
False
rpc
RPC
非同期処理のためのいくつかの設定のオブジェクトです。説明したり、実際に自分で使用したりするのに十分なほど理解していません!crop = True
画像の正方形を均等な比率でトリミングします。
size
最初は私を混乱させたものです。それ自体は異なる URL を生成しません。唯一の違いは、自分で自由に設定できるサフィックス=sXX
にあります。
個人的には、元のサイズの URL を自分の に保存し、(たとえば) 使用する場所でdb.Model
それを行います。まったく同じことを行っているため、必要な異なるサイズごとimgUrl+'=s150'
に呼び出す必要はなく、パフォーマンスの低下もありません。get_serving_url()
また、指定されたサイズは画像の最大寸法であることにも注意してください。これは不思議なことにドキュメントに隠されています-しばらくの間、幅であるに違いないと思いましたが、画像が「ポートレート」の場合、もちろん高さです。
追加することもできます-c
( と同等crop=True
)。
RPC
したがって、より完全な (ただし、オブジェクトの使用方法を説明する知識がありません) 例:
from google.appengine.ext.blobstore import BlobKey
from google.appengine.api.images import get_serving_url
from webapp2 import RequestHandler
class sample(RequestHandler):
def get(self):
key = BlobKey('imagekey')
url = get_serving_url(key, secure_url=True)
#get_serving_url(key, secure_url=True, size=150, crop=True)
urlThumb = url + '=s150-c'
#get_serving_url(key, secure_url=True, size=50)
urlMini = url + '=s50'
self.response.write('Here is my thumbnail: <img src="%s"><br>'%urlThumb)
self.response.write('Here is mini-me!: <img src="%s"><br>'%urlMini)
self.response.write('And back to full-size: <img src="%s"><br>'%url)
これらの URL は、関連するモデルのデータストアに保存できます。これは、まったく異なる を使用するよりも優先さdb.BlobProperty
れます。これは、実際には画像用ではありません。また、コストも高く、効率も悪いです。
もちろん、url
(上記のように)ストアのみをお勧めします。これは、文字列のサフィックスによってサイズを簡単に変更できるためです。実際、これは Jinja テンプレート (または同等のもの) で実際に実行できることです。それ以外の場合width=
は、CSS で同じことを指定してトリミングすることになります。
get_serving_url
ここに文書化されています。エンド ツー エンドの例自体はありませんが、非常に簡単です。オプションのサイズ変更およびトリミング オプションと共に blob キーを渡すと、URL が返されます。画像を参照したい場所ならどこでもその URL を使用できます。画像はインフラストラクチャによって提供され、適切にサイズ変更およびトリミングされます。
これは、ブロブストアにアップロードされた画像のみに適用されることに注意してください。通常のデータストアにアップロードされて保存されてBlobProperty
いるものはすべて、自分でサイズ変更、トリミング、提供する必要があります。
また、Google は Java プログラマー向けの getServingUrl() の実例を実際に提供していないため、非常に混乱しました。Ollie、上記のコード例は Python であると思いますか?
私はそれがどのように機能するかを確認するためにいくつかのコーディングを行いました。これは Java で動作するコード スニペットです (Google のサイトから動作する例を簡単に取得できます: https://cloud.google.com/appengine/docs/java/blobstore/と置き換えますこのコードを使用して、Serve.java の下に記述されたコード):
@Override
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException {
BlobKey blobKey = new BlobKey(req.getParameter("blob-key"));
ImagesService imagesService = ImagesServiceFactory.getImagesService();
String url = imagesService.getServingUrl(ServingUrlOptions.Builder.withBlobKey(blobKey).crop(true).imageSize(200));
PrintWriter out = res.getWriter();
out.println("Here is my thumbnail! <img src="+ url + ">");
}
}
これにより、ブロブストアに投稿した画像が取得され、幅と高さが 200 の適切な正方形になるようにトリミングされ、サムネイルが表示されるように HTML で印刷されます。
これが誰かを助けることを願っています!