如何在不获取Google App Engine中的所有数据的情况下获取图像的宽度和高度值?

时间:2017-10-03 10:37:56

标签: google-app-engine google-cloud-storage

我在Google App Engine上创建了一个应用程序。我们会将所有图片保留在Google云端存储上。此应用使用get_serving_url方法投放照片。该应用程序通过更改服务URL来进行大小操作。此时,我们需要获取图像宽度和高度值。

我可以这样做:

blob_key = blobstore.create_gs_key(_gspath)
data = blobstore.fetch_data(blob_key, 0, 50000)
raw_image = images.Image(image_data=data)

执行此操作后,我可以通过raw_image变量获取宽度和高度值。但我猜这种方式并不好。我不想获取所有数据,因为有些图像太大了。如何在不获取数据操作的情况下获取此信息?

1 个答案:

答案 0 :(得分:0)

Google App Engine不提供内置方式来获取图像的尺寸而不将其加载到内存中。您可以使用一些替代方案:

  1. 您可以创建一个在GCE上运行的服务,该服务将从GCS获取图像,并返回该大小。您的GAE应用程序可以调用它。这将内存需求转移到GCE,后者更能处理它。

  2. 如果您只使用PNG,GIF,BMP和ICO格式(不是JPEG或TIFF),那么您只需获取图像的前26个字节并将其作为image_data传递。这足以让Images类能够获得宽度和高度。

  3. 如果您控制上传过程,则可以将宽度和高度存储为GCS中的元数据。然后,您不需要获取GCS对象,只需获取元数据即可获取尺寸。