首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >图像对象

图像对象
EN

Stack Overflow用户
提问于 2012-12-10 23:03:57
回答 2查看 1.8K关注 0票数 1

使用和.

这是:

代码语言:javascript
运行
复制
img = images.Image(blob_key=image)
logging.info(img.size)
self.response.headers['Content-Type'] = 'image/jpeg'
self.response.out.write(img)

有属性错误:

代码语言:javascript
运行
复制
AttributeError: 'Image' object has no attribute 'size'

那么google应用引擎中的Image实例没有大小吗?

那么这是如何运作的呢?

代码语言:javascript
运行
复制
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创建图像对象。因此,最终解决方案如下所示:

代码语言:javascript
运行
复制
class Mandelbrot(db.Model):
  image = blobstore.BlobReferenceProperty()

@property
def image_url(self):
  return images.get_serving_url(self.image)

通过这种方式,我可以将图像url解析到我的页面,例如:

代码语言:javascript
运行
复制
<img src=
{% if mandelbrot.image %}
  "{{ mandelbrot.image_url }}" 
{% else %} 
  "./assets/img/preloader.gif"
{% endif %}
/>
EN

Stack Overflow用户

回答已采纳

发布于 2012-12-10 23:46:55

我不熟悉PIL,因为我使用来自Google的另一种解决方案来服务和调整图像大小。谷歌可以为你服务的图像,使用谷歌高性能图像服务。这意味着:

  • 您必须创建一次,使用: serving_url为have存储中的图像创建一个get_serving_url。
  • 您可以更改所服务图像的大小。原件未更改。
  • 谷歌将为你提供几乎免费的图片。你不需要一个处理程序。你只需要支付带宽

下面是一个例子。您可以更改=s0,以更改大小。s0返回原始大小。

代码语言:javascript
运行
复制
https://lh6.ggpht.com/1HjICy6ju1e2GIg83L0qdliUBmPHUgKV8FP3QGK8Qf2pHVBfwkpO_V38ifAPm-9m20q_3ueZzdRCYQNyDE3pmA695iaLunjE=s0

get_serving_url文档:https://developers.google.com/appengine/docs/python/images/functions

代码:

代码语言:javascript
运行
复制
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()
票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13810823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档