我需要一种直接的方式来在将图像上传到Google云端存储时自动调整图片大小

时间:2016-05-18 15:20:07

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

我有一个移动应用,目前正在将图片从应用上传到Google云端存储。问题是,原始文件非常大(我仍然希望保留),所以当通过公共URL在应用程序中查看它们时,下载需要很长时间。

我希望,当图像上传到云端存储时,调整它们的大小,并使用较小的图像的网址在应用中预览它们。

我认识到解决方案可能是使用App Engine和Python Images API,但我无法弄清楚如何将App Engine连接到云存储(我不熟悉App Engine)。

任何指导都将不胜感激。 -Zach

2 个答案:

答案 0 :(得分:3)

您可以配置对象更改通知(https://cloud.google.com/storage/docs/object-change-notification)并创建一个App Engine应用程序,该应用程序可调整每个传入图像的大小并生成较小的图像。一种常见的方法是使用单独的传入和实时存储桶,因此实时存储桶仅包含已调整大小的图像。

答案 1 :(得分:1)

我在Java中使用以下工作流 - 它在python中必须相同:

(a)当用户准备上传图像时,我会调用App Engine后端来请求上传URL。此上载URL使用BlobstoreService并使用云存储桶名称创建。您还传递一个回调处理程序,如" / imageupload"。

blobstoreService.createUploadUrl("/imageupload", UploadOptions.Builder.withGoogleStorageBucketName("myBucket"));

(b)客户端收到上传URL并将其作为URL插入上传表单。提交表单后,原始映像将直接上载到云存储桶中。

(c)上传完成后,Cloud Storage将调用您提供的回调处理程序(例如" / imageupload")。此调用将包括有关上载对象的信息,包括其云存储对象名称和大小。

收到此回调后,您可以根据此信息创建一个Image对象,并将其传递给Images API进行调整大小。然后你可以保存调整大小的图像。

最好的部分是App Engine和云存储可以在此工作流程中无缝工作,只要所有内容都在同一个projectID下。您不必担心身份验证。