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

5 resize-image firebase firebase-realtime-database firebase-storage firebase-extensions

我在 Firebase 中使用Resize Images扩展。在我添加这个扩展之前,我已经上传了很多图片,它们在各自的帖子/存储桶中,并通过实时数据库中的 URL 链接。

有什么方法可以调整存储桶中所有现有图像的大小?最好不必用他们的帖子重新分配他们的网址?

Ren*_*nec 5

如果查看“Resize Images”扩展的代码,你会看到扩展底层的 Cloud Function 是由一个onFinalize事件触发的,这意味着:

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

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


但是,您可以轻松编写自己的云函数来执行相同的操作,但会被触发,例如,通过调用特定 URL(HTTPS 云函数)或在临时 Firestore 集合中创建新文档(背景触发 CF) .

此 Cloud Functions 函数将执行以下步骤:

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

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