【问题标题】:Accessing images from the datastore in GAE within Javascript在 Javascript 中从 GAE 中的数据存储区访问图像
【发布时间】:2013-02-01 13:41:01
【问题描述】:

我是 GAE (Python) 的新手,我确实需要一些帮助来了解如何从数据存储中提供图像并在客户端 Javascript 中访问它们。

我一直在这里学习 Google 的教程:Serving Dynamic Images with Google App Engine (Python)

假设我有数据对象来存储一些图像

class Default_tile(db.Model)
  name = db.StringProperty()
  image = db.BlobProperty(default=None)

将图像添加到上述数据库的正确代码是这样的吗?:

default_tile = Default_tile()
default_tile.name = "grass"
default_tile.image = db.Blob(urlfetch.Fetch("http://www.bbc.com/grass.png").content)
default_tile.put() 

不能说我在客户端 javascript 上有以下代码:

  var image = new Image();

  image.onload = function() {
    context.drawImage(image, 69, 50);
  };
  imageObj.src = ***how to I get the image, named grass, from the Datastore***

所以我的问题是如何获得图像?

理想情况下,我只想使用 imageObj.src = /images/grass

感谢您的帮助。

【问题讨论】:

    标签: javascript image google-app-engine


    【解决方案1】:

    数据存储

    您正确地遵循了示例,但您错过了来自同一 URL 的 Retrieving & Displaying Images 部分。

    基本上,您需要一个处理程序来定位此图像并提供它。在您的情况下,假设示例中的 title 在您的情况下是 name。因此,您最终会得到一个用于检索图像的 URL,如下所示:

    http://localhost:8080/image?name=grass
    

    这将传递图像,所以如果你想在客户端使用,你可以简单地使用它

    imageObj.src = '/image?name=grass'
    

    Blobstore API

    如果您计划存储许多图像并从用户那里获取它们,那么您应该考虑改用Blobstore API。这对初学者来说有点复杂,但以后会有所收获,因为您可以将图像(或其他任何东西)存储在更便宜的谷歌云存储上。

    example 开始,您将能够存储和提供 blob,但您也可以使用 BlobKeyProperty 而不是 BlobProperty 在模型中存储 blob_info.key()

    有了它而不是纯数据存储,您将能够利用 get_serving_url() 函数:

    返回提供图片的 URL。

    此 URL 格式允许动态调整大小和裁剪,因此您不需要 需要在服务器上存储不同的图像大小。提供图像 通过高度优化的无 cookie 基础架构实现低延迟。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    相关资源
    最近更新 更多