GAE(AppEngine)似乎在发布时调整了我的图片大小

时间:2012-08-08 16:12:58

标签: python google-app-engine

我使用以下代码成功将图片发布到我的Google AppEngine应用程序:

  def post(self):

    image_data = self.request.get('file')
    file_name = files.blobstore.create(mime_type='image/png')

    # Open the file and write to it
    with files.open(file_name, 'a', exclusive_lock=True) as f:
      f.write(image_data)

    # Finalize the file. Do this before attempting to read it.
    files.finalize(file_name)

    # Get the file's blob key
    blob_key = files.blobstore.get_blob_key(file_name)
    self.response.out.write(images.get_serving_url( blob_key ))

但是,当我浏览get_serving_url()输出的网址时,图片始终,分辨率降低。 为什么?我已经检查并仔细检查过的图片尺寸是否正确(从iPhone相机,大约3200x2400分辨率)。然而,服务的图像总是512x384。

我是GAE的新手,但我认为上面的代码应该将图像存储在BlobStore而不是数据存储区中,以避免1 MB的限制。

有没有人知道会发生什么?

干杯, 布雷特

2 个答案:

答案 0 :(得分:3)

找到解决方案。或者至少对我有用的东西。 我将=sXX附加到已投放网址的末尾,AppEngine将以XX分辨率投放图片。例如,如果行:

self.response.out.write(images.get_serving_url( blob_key ))

返回: http://appengine.sample.com/appengineurlkey

然后,当调用上面的url结果时,图像将是较低分辨率的图像,

然后通过调用URL: http://appengine.sample.com/appengineurlkey**=s1600**

生成的服务图片的分辨率为1600x1200(或通过保持宽高比限制类似的分辨率)。

答案 1 :(得分:0)

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

中解释了您所看到的内容的解释

get_serving_url的文档中:

  

调整图像大小或裁剪图像时,必须使用0到1600的整数指定新大小。最大大小在IMG_SERVING_SIZES_LIMIT中定义。 API将图像调整为提供的值,将指定的大小应用于图像的最长尺寸并保留原始高宽比。

如果您想要提供全尺寸图像,另一种方法是将图像直接上传到blobstore,然后从那里提供。 (即,完全绕过图像API。)请参阅https://developers.google.com/appengine/docs/python/blobstore/overview