2012-08-08 11 views
1

我使用下面的代码成功发布到我的谷歌AppEngine应用程式的图像来调整图片的大小:GAE(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(),在输出的URL图像是总是在降低分辨率。 为什么?我检查并重复检查发布的图像尺寸是否正确(来自iPhone相机,因此约为3200x2400分辨率)。然而,服务的图像始终是512x384。

我对GAE相当陌生,但我认为上面的代码应该将图像存储在BlobStore而不是数据存储区中,从而规避1 MB的限制。

有没有人有任何想法会发生什么?

干杯, 布雷特

回答

3

实测值的溶液中。或者至少有一些适合我的东西。 我在=sXX附加到所提供的URL的末尾,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分辨率(或类似分辨率受限于维持宽高比)。

+3

= s0将服务于原始大小 – Greg 2012-08-08 17:42:30

0

您所浏览的get_serving_url在文档中https://developers.google.com/appengine/docs/python/images/functions

解释什么解释:

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

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

相关问题