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



i在Google App Engine上创建一个应用程序。我们将所有图像保存在Google Cloud存储中。该应用使用使用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变量获得宽度和高度值。但是我想这种方式不好。我不想获取所有数据,因为某些图像太大了。如何在不获取数据操作的情况下获取此信息?

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

  1. 您可以创建在GCE上运行的服务,该服务将从GCS获取图像并返回大小。然后,您的GAE应用程序可以调用此功能。这将记忆要求移至GCE,这更有能力处理。

  2. 如果您仅使用PNG,GIF,BMP和ICO格式(而不是JPEG或TIFF),则只需获取图像的前26个字节并将其传递给Image_Data即可。这足以使图像类能够获得宽度和高度。

  3. 如果您控制上传过程,则可以将宽度和高度存储在GCS中。然后,您无需获取GCS对象,只是为了获得尺寸。

相关内容

最新更新