Firebase云功能图像调整大小

时间:2018-07-26 16:22:41

标签: firebase google-cloud-functions firebase-storage

下面的示例https://github.com/firebase/functions-samples/blob/master/generate-thumbnail/functions/index.js

在处理图像后如何通知客户端?

我想让一个表格上传一张照片并将其调整为多种尺寸。当云功能完成时,如何通知客户?

我正在使用firebase/storage上传图像客户端,然后我有一个功能可以监听要上传的文件functions.storage.object().onFinalize并处理/调整图像大小。云功能完成时是否向客户端回调,或者我需要设置发布/订阅?

3 个答案:

答案 0 :(得分:1)

您的最终新图像(较小的图像或其他图像)将具有一些URL,例如storageCompany.net/123123123123.jpg

因此,在您的实时Firebase中,您将拥有一些提供这些URL的位置。

所以也许像..

user/NNNN/photos/thumbnails

为清楚起见,您可能有

user/NNNN/photos/thumbnails/726376733677.jpg
user/NNNN/photos/thumbnails/808080188180.jpg
user/NNNN/photos/thumbnails/363636636636.jpg

现在您要添加

user/NNNN/photos/thumbnails/123123123123.jpg

因此,的确,您的应用程序只会监视该位置上出现的新项目(即字符串-URL)!


请明确说明,假设您有一个显示“任何类型的图像”的ios或droid应用,这是一个Firebase项目。

因此,在您的示例中是“由服务器创建”的“缩略图图像”。

但是,无论显示哪种图像都没关系。

  • Firebase项目,
  • “显示图像”

基本思想只是我在上面解释的内容-您只是以一种或另一种方式拥有一个具有“图像URL”的Firebase位置

就这么简单!

一旦图像“就绪”-无论如何发生-上载,图像都是由3D软件生成的..无论如何..

这就是您使Firebase项目“带有图像”的方式。 iOS,droid或www。

当然有很多变化。在这个例子中..

enter image description here

我们有一个带有许多“图像”的大文件夹。每个“图像”都有很多字段,包括各种实际的图像URL(缩略图,大缩略图,视频等)

准确地说,“缩略图”(例如)URL仅在创建该图像并将其上传到某个存储URL时显示!

享受

答案 1 :(得分:0)

您将必须安排客户端与您的职能部门之间的交换点。通常,这将是数据库中函数将在其中写入结果的某个已知位置,并且客户端可以侦听更改以知道工作何时完成。

您正在使用的示例将需要进行修改,以允许客户端和服务器提前约定唯一的位置。

答案 2 :(得分:0)

Firebase 图像大小调整有两个问题 - (1) 图像大小调整完成后通知客户端很棘手,以及 (2) 您永远不知道客户端应用程序可能需要的确切大小(假设您是构建响应式应用)。

这两个问题可以通过使用动态图像大小调整方法来解决。客户端应用程序可以直接将图像上传到 Google Storage(通过签名 URL 和 PUT 请求),一旦上传完成,它可以立即请求调整大小的图像。例如:

https://i.kriasoft.com/sample.jpg - 原始图像 https://i.kriasoft.com/w_200,h_100/sample.jpg - 动态调整大小的图像

调整大小的图像可以缓存在 Google Storage 存储分区和 CDN 中。

$ npm install image-resizing --save
const { createHandler } = require("image-resizing");

module.exports.img = createHandler({
  // Where the source images are located.
  // E.g. gs://s.example.com/image.jpg
  sourceBucket: "s.example.com",

  // Where the transformed images need to be stored.
  // E.g. gs://c.example.com/w_80,h_60/image.jpg
  cacheBucket: "c.example.com",
});

https://github.com/kriasoft/image-resizing