OJF*_*ord 7

尽管有文档,但我也很困惑.

现在我更了解它(我想!),我将提供一个例子.

get_serving_url()google.appengine.ext.blobstore类中,并采取一个位置参数,BlobKey.

A BlobKey可以用字符串构造: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)
Run Code Online (Sandbox Code Playgroud)

到目前为止,所有罚款和花花公子.

该函数还需要三个关键字参数,如文档所述.这是size,crop,secure_url,和rpc.

  • secure_url = True只返回一个httpsurl而不是http(默认值False)
  • rpcRPC异步处理的一些设置的对象.我不太了解它,或者确实自己使用它!
  • crop = True 以均匀的比例裁剪图像正方形.

size是一开始让我很困惑.它本身不会生成不同的URL.唯一的区别在于后缀=sXX,您可以自由设置.

就个人而言,我将原始大小的URL存储在my中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)
Run Code Online (Sandbox Code Playgroud)

然后,这些URL可以存储在数据存储区中,无论它们与哪个模型相关.这比使用完全不同的 更好db.BlobProperty,这根本不适用于图像.它也更昂贵,效率更低.

当然,我建议你只存储url(如上所述),因为通过后缀字符串来改变大小是如此容易!事实上,你可以在你的Jinja模板(或等效物)中真正做到这一点 - 否则你可能会width=在CSS中通过相同的方式指定和裁剪.