当前位置: 首页 > 面试题库 >

Python Google App Engine图片对象

袁开宇
2023-03-14
问题内容

使用Python图片库PIL和Google App Engine Blobstore …

这个:

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 App Engine的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创建Image对象。因此,最终的解决方案如下所示:

class Mandelbrot(db.Model):
  image = blobstore.BlobReferenceProperty()

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

这样,我可以将图片网址解析为我的页面,例如:

<img src=
{% if mandelbrot.image %}
  "{{ mandelbrot.image_url }}" 
{% else %} 
  "./assets/img/preloader.gif"
{% endif %}
/>

问题答案:

我不熟悉PIL,因为我使用了Google提供的另一种解决方案来提供图像和调整图像大小。Google可以使用Google高性能图片服务为您提供图片。这表示:

  • 您必须使用以下方法创建一次,即在blobstore中为图片创建一个serve_url:get_serving_url
  • 您可以更改所投放图片的尺寸。原件不变
  • Google几乎免费为您提供图片。您不需要处理程序。您只需要支付带宽

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

https://lh6.ggpht.com/1HjICy6ju1e2GIg83L0qdliUBmPHUgKV8FP3QGK8Qf2pHVBfwkpO_V38ifAPm-9m20q_3ueZzdRCYQNyDE3pmA695iaLunjE=s0

get_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()


 类似资料:
  • 本文向大家介绍微信小程序 图片绝对定位(背景图片),包括了微信小程序 图片绝对定位(背景图片)的使用技巧和注意事项,需要的朋友参考一下 微信小程序 图片绝对定位 前言: 在小程序中,有时需要用到背景图片,但是如果使用background-image的话,就无法控制图片的大小,background-image一般用于将图片压缩为1像素的背景图片,然后自动填充铺满。使用背景图片的话,一般使用一些新的v

  • 我想像所附的图像一样绘制图表,但我在绘制右侧的红色垂直矩形以及将其他对象放在顶部时遇到了困难。最大的问题是与许多不同屏幕尺寸的Android设备有关。我完全理解我在这个过程中试图实现的目标,包括以下目标。非常感谢所有帮助。 屏幕两侧各有1个红色矩形(右手边我不知道如何画在那里) 红色垂直矩形之间的7个灰色框的宽度需要相等 黑色垂直线需要在矩形之间,就像上图所示 显示数字的文本框需要与红色小矩形一起

  • Bootstraps优化图片,添加了响应式的行为(因此它们绝不会大过其父元素),并通过样式类给它添加轻量级的样式。 响应式图片 在 Bootstrap 中,给图片应用.img-reponsive类以及 max-width: 100%、height:auto; 样式,使其具有响应性,并根据父元素的大小缩放。 <img src="..." class="img-responsive" alt="Res

  • Sketch 不是一个位图编辑器,所以我们的图片编辑功能比较有限。但是 Sketch 3 改进了这一点,现在能更好的处理文件中的图片。 值得注意的是,你可以将任何图层变成一个扁平的位图,通过进入 图层 > 将选区变成位图 (Layer > Flatten Selection to Bitmap)。 位图编辑   Sketch 中的位图编辑有很大的提升,现在也有一个得体的 UI 来专门展示。   选

  • 插入图片的语法和插入超链接的语法基本一致,只是在最前面多一个 !。也分为行内式和参考式两种。 行内式 ![GitHub](https://www.wenjiangs.com/wp-content/uploads/2020/docimg1/3265208.jpg "GitHub,Social Coding") 方括号中的部分是图片的替代文本,括号中的 'title' 部分和链接一样,是可选的。 参

  • 属性: 属性名 类型 说明 buffer ArrayBuffer 解码后的数据 format number 数据格式 6 为RGBA8888 、4 为RGBA4444 width number 图片宽度像素 height number 图片高度像素 示例: var img = BK.Image.loadImage("GameRes://texture/icon.png"); var width =