使用和.
这是:
img = images.Image(blob_key=image)
logging.info(img.size)
self.response.headers['Content-Type'] = 'image/jpeg'
self.response.out.write(img)有属性错误:
AttributeError: 'Image' object has no attribute 'size'那么google应用引擎中的Image实例没有大小吗?
那么这是如何运作的呢?
img = images.Image(blob_key=image)
img.resize(width, height)
img.im_feeling_lucky()
thumbnail = img.execute_transforms(output_encoding=images.JPEG)
self.response.headers['Content-Type'] = 'image/jpeg'
self.response.out.write(thumbnail)我遗漏了什么?
编辑:
修复程序使用的是get_serving_url ,而不是@voscausa提出的使用我的图像服务器。由于我的对象被jinja2模板解析,所以不可能通过jinja2创建图像对象。因此,最终解决方案如下所示:
class Mandelbrot(db.Model):
image = blobstore.BlobReferenceProperty()
@property
def image_url(self):
return images.get_serving_url(self.image)通过这种方式,我可以将图像url解析到我的页面,例如:
<img src=
{% if mandelbrot.image %}
"{{ mandelbrot.image_url }}"
{% else %}
"./assets/img/preloader.gif"
{% endif %}
/>发布于 2012-12-10 23:46:55
我不熟悉PIL,因为我使用来自Google的另一种解决方案来服务和调整图像大小。谷歌可以为你服务的图像,使用谷歌高性能图像服务。这意味着:
下面是一个例子。您可以更改=s0,以更改大小。s0返回原始大小。
https://lh6.ggpht.com/1HjICy6ju1e2GIg83L0qdliUBmPHUgKV8FP3QGK8Qf2pHVBfwkpO_V38ifAPm-9m20q_3ueZzdRCYQNyDE3pmA695iaLunjE=s0get_serving_url文档:https://developers.google.com/appengine/docs/python/images/functions
代码:
class Dynamic(db.Model): # key : name
name = db.StringProperty()
blob_ref = blobstore.BlobReferenceProperty()
serving_url = db.LinkProperty()
dyn= Dynamic.get_by_key_name(key_name)
try : # get url with size = 0
dyn.serving_url = images.get_serving_url(dyn.blob_ref, size=None, secure_url=True)
except DeadlineExceededError :
try : # sometimes this request fails, retry. This always works fine
dyn.serving_url = images.get_serving_url(dyn.blob_ref, size=None, secure_url=True)
except DeadlineExceededError :
logging.error('Image API get_serving_url deadline error after retry' %(dyn.key().name()))
return None
dyn.put()https://stackoverflow.com/questions/13810823
复制相似问题