【问题标题】:How can I resize all existing images in firebase storage?如何调整 Firebase 存储中所有现有图像的大小?
【发布时间】:2020-06-05 08:34:32
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    如果您查看“调整图像大小”扩展的code,您会看到作为扩展基础的云函数是由onFinalize 事件触发的,这意味着:

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

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


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

    此云函数将执行以下步骤:

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

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

    【讨论】:

    • 或者...您可以从字面上再次复制并粘贴文件。下载并重新上传到存储桶,或使用 GCP 传输服务。
    • @David,这样做你会为上传操作付费,所以如果文件很多,这可能不是最合适的方法。
    猜你喜欢
    • 2020-11-12
    • 2021-11-15
    • 2018-01-28
    • 2017-05-30
    • 2019-12-13
    • 1970-01-01
    • 2018-08-28
    • 2017-12-29
    • 1970-01-01
    相关资源
    最近更新 更多