【问题标题】:How to create a thumbnail image when a new firestore document is created, and when that document contains image url saved in cloud storage?如何在创建新的 firestore 文档时创建缩略图,以及当该文档包含保存在云存储中的图像 url 时?
【发布时间】:2021-10-22 12:21:25
【问题描述】:

我想实现以下目标,但我目前陷入困境,因为 API 文档太难了。我需要一些指导。

创建一个缩略图,将图像大小调整为 100 像素的宽度。

以下是应该做什么的详细信息。

  1. 每当在 Firestore 数据库中创建新文档时,都应创建缩略图。
  2. 该文档包含存储在 Firebase Cloud Storage 中的图像的永久 URL。 (这个url是通过flutter cloud storage package.中的getDownloadUrl()方法生成的)
  3. 生成的缩略图应与原始图像存储在同一目录中。
  4. 缩略图的 URL 应更新为 Firestore 数据库文档字段。

我目前正在使用 TS,但用 JS 回复也可以。

这是显示我当前进度的代码。

const firestore = admin.firestore();

export const generateThumbnailOnCreate = functions
  .firestore.document("missions/{missionId}")
  .onCreate(async (snap, context) => {
    const doc = snap.data();
    const missionImgUrl = doc.mission_img_url;

    /*
     * TODO
     * use the mission img url to access the cloud storage
     * create thumbnail at the storage directory
     * get the permanent thumbnail url update firestore document
     */

    return snap.ref
      .update({ thumbnail_img_url: thumbnailImgUrl })
      .then((docRef) => console.log("Success"))
      .catch((err) => console.error("Error"));
  });

【问题讨论】:

  • "该文档包含存储在 Firebase 云存储中的图像的 url。" => 哪个确切的 URL?以gs://(文件位置)或签名 URL 开头的那个?这个 URL 是如何生成的?
  • @Renaud Tarnec 该url是由flutter firebase sdk中的getDownloadUrl()方法生成的。 firebase.flutter.dev/docs/storage/usage
  • 拥有一个下载地址来管理比云存储路径更难。我建议您也存储路径,并使用该路径从云函数中获取文件。

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


【解决方案1】:

据我所知,Firebase 存储 API 不会调整图像大小。 但我所做的是使用ImageKit 来提供我的图像,因为它支持通过 URL Query 动态调整大小。

如果您在哪里坚持使用 Firebase 作为缩略图,您必须自己将图像大小调整为所需的缩略图大小,并将它们与原始图像一起存储。

Here 是另一个关于如何使用 Javascript 调整图像大小的函数的参考问题。

【讨论】:

    猜你喜欢
    • 2011-11-28
    • 2018-04-03
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 2020-03-03
    • 2019-08-04
    • 1970-01-01
    相关资源
    最近更新 更多