在App Engine中调整大图像的大小

时间:2009-06-25 18:32:20

标签: image api google-app-engine image-processing resize

我在Google App Engine上有一款可以接受用户上传图片的应用。我设想的问题是用户将直接从他们的相机上传这些图像,文件大小通常大于1MB,这是图像API的限制(用于调整图像大小)。

接受上传1.5MB图像文件并将其调整为1MB以下的最佳方法是什么?

3 个答案:

答案 0 :(得分:7)

虽然App Engine文档中并不清楚,但可以通过结合使用Blobstore和Image Manipulation Service来实现这一点。

你必须:

  1. 将图像上传到Blobstore
  2. 从Blobstore中检索图像
  3. 使用图像执行图像处理,尺寸小于1mb
  4. 我写了一篇关于此的帖子 - > http://socialappdev.com/uploading-and-re-sizing-large-images-on-app-engine-11-2010

答案 1 :(得分:3)

以下是解决此问题的两种(类似)方法:

  1. 如果你想自己控制一切,你可以在你的服务器上放一个调整大小的脚本,它将URL带到原始上传的图像(由于HTTP响应大小限制,最多可以达到10MB,但你会必须将其作为1MB块存储在数据存储区中),从应用程序下载,调整大小,然后POST将其重新发送到您的应用程序。所有这些互动当然都需要某种授权,因此不能被滥用。或者,POST将图像直接发送到外部服务器,但是您必须将其他表单数据发送回应用程序,或使用单独的表单进行图像上传。
  2. 使用外部影像服务。我建议Picnik。见their API documentation。如您所见,它允许您创建一个将图像直接发布到其服务器的表单,然后用户可以编辑图像(并调整大小),然后将图像发布回您的服务器。使用此解决方案,您必须以单独的形式上传图片,因为Picnik会收到您的所有POST数据。
  3. 我建议使用第2点,因为它不需要您绕过Google App Engine限制,并且由于您的用户直接从相机上传图像,因此他们可能希望无论如何都要对它们执行某些操作(例如裁剪)。

答案 2 :(得分:1)

这是一个难题。使用google.appengine.api.images.resize的“明显”答案将无效,因为它太大了。 :)所以你必须在服务器上使用第三方软件(由于App Engine的限制,这将是棘手的)或cilent(例如Java上传器)。