a.m*_*.m. 1 google-app-engine image-processing blobstore google-cloud-platform
有人知道这个例子吗?我无法在Google的文档中找到一个.
尽管有文档,但我也很困惑.
现在我更了解它(我想!),我将提供一个例子.
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)rpc是RPC异步处理的一些设置的对象.我不太了解它,或者确实自己使用它!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中通过相同的方式指定和裁剪.
| 归档时间: |
|
| 查看次数: |
5755 次 |
| 最近记录: |