如何调整Firebase存储中所有现有图像的大小?

时间:2020-02-20 22:54:11

标签: firebase firebase-realtime-database firebase-storage resize-image firebase-extensions

我在Firebase中使用调整图像大小扩展名。在添加此扩展名之前,但是我已经上传了许多图像,它们在各自的发布/存储分区中,并通过实时数据库中的URL链接。

有什么方法可以调整存储桶中所有现有图像的大小?最好不必在帖子中重新分配其URL?

1 个答案:

答案 0 :(得分:3)

如果您查看“调整图像大小”扩展名的code,您将看到该扩展名基础的Cloud Function是由onFinalize事件触发的,这意味着:

当有新对象(或现有对象的新一代)出现时 在存储桶中成功创建。这包括复制或重写 现有对象。

因此,如果不重写/重新生成现有图像,则不会触发扩展程序。


但是,您可以轻松编写自己的Cloud Function,该功能可以执行相同的操作,但是可以通过调用特定URL(HTTPS cloud Function)或通过在临时Firestore集合中创建新文档来触发(background triggered CF)。

此Cloud Function将执行以下步骤:

  1. 获取存储桶中的所有文件,请参阅Google Cloud Storage Node.js客户端API的getFiles()方法。此方法返回一个GetFilesResponse对象,该对象是File个实例的数组。
  2. 通过遍历数组,对于每个文件,检查文件是否在存储桶中具有相应的调整大小的图像(取决于您配置扩展名的方式,调整大小的图像可能在特定的文件夹中)
  3. 如果文件没有相应的调整大小的图像,请对该文件执行与扩展云功能相同的业务逻辑。

根据要处理的图像数量,您可能需要增加超时值和/或Cloud Function的已分配内存,请参阅https://firebase.google.com/docs/functions/manage-functions#set_timeout_and_memory_allocation