【问题标题】:Resize large images in App Engine在 App Engine 中调整大图像的大小
【发布时间】:2009-06-25 18:32:20
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    虽然这在 App Engine 文档中并不清楚,但可以通过结合使用 Blobstore 和图像处理服务来实现。

    你必须:

    1. 将图像上传到 Blobstore
    2. 从 Blobstore 中检索图像
    3. 使用大小小于 1mb 的图像执行图像处理

    我已经写了一篇关于这个的帖子 -> http://socialappdev.com/uploading-and-re-sizing-large-images-on-app-engine-11-2010.

    【讨论】:

    • 很棒的博文!文档注意到以下几点:图像服务可以使用 Blobstore 值作为转换的源。源图像可以与 Blobstore 值的最大大小一样大。图像服务仍将转换后的图像返回给应用程序,因此转换后的图像必须小于 1 兆字节。这对于制作用户上传的大照片的缩略图非常有用。
    • 根据文档,最大大小现在为 32mb,高于之前的 1mb 限制
    【解决方案2】:

    这里有两种(类似的)方法可以解决这个问题:

    1. 如果您想自己控制一切,您可以在您的服务器上放置一个调整大小脚本,该脚本将 URL 带到上传的原始图像(由于 HTTP 响应大小限制,最大可能为 10MB,但您可以必须将它作为 1MB 块存储在数据存储中),从您的应用程序下载它,调整它的大小,然后 POSTs 将它返回到您的应用程序。当然,所有这些交互都需要某种授权,以免被滥用。或者,POST 将图像直接发送到您的外部服务器,但是您必须将其他表单数据发送回您的应用程序,或者使用单独的表单进行图像上传。
    2. 使用外部映像服务。我会推荐Picnik。见their API documentation。如您所见,它允许您创建一个表单,将图像直接发布到他们的服务器,然后用户可以编辑图像(并调整大小),然后将图像发布回您的服务器。使用此解决方案,您必须以单独的形式上传图片,因为 Picnik 会收到您的所有 POST 数据。

    我推荐第 2 点,因为它不需要您绕过 Google App Engine 的限制,而且由于您的用户直接从相机上传图像,他们可能无论如何都想对它们做一些事情(例如裁剪。)

    【讨论】:

    • Picnik 看起来很整洁。感谢您的链接!
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      • 2010-12-21
      • 2014-02-01
      • 2013-08-20
      • 1970-01-01
      相关资源
      最近更新 更多