1

これの例を知っている人はいますか?Google のドキュメントで見つけることができませんでした。

4

4 に答える 4

7

ドキュメントにもかかわらず、私もしばらく混乱していました。

よく理解できたので (と思います!)、例を示します。

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 つのキーワード引数もとります。これらはsizecropsecure_url、およびrpcです。

  • secure_url = True(default, )httpsの代わりに単純に URL を返しますhttpFalse
  • rpcRPC非同期処理のためのいくつかの設定のオブジェクトです。説明したり、実際に自分で使用したりするのに十分なほど理解していません!
  • 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 で同じことを指定してトリミングすることになります。

于 2014-08-07T23:48:45.093 に答える
4

get_serving_urlここに文書化されています。エンド ツー エンドの例自体はありませんが、非常に簡単です。オプションのサイズ変更およびトリミング オプションと共に blob キーを渡すと、URL が返されます。画像を参照したい場所ならどこでもその URL を使用できます。画像はインフラストラクチャによって提供され、適切にサイズ変更およびトリミングされます。

これは、ブロブストアにアップロードされた画像のみに適用されることに注意してください。通常のデータストアにアップロードされて保存されてBlobPropertyいるものはすべて、自分でサイズ変更、トリミング、提供する必要があります。

于 2011-07-04T03:17:13.747 に答える
0

また、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 で印刷されます。

これが誰かを助けることを願っています!

于 2014-10-05T16:55:36.163 に答える