【问题标题】:How can i resize already stored images in firebase?如何调整 Firebase 中已存储图像的大小?
【发布时间】:2021-11-15 05:20:27
【问题描述】:

我需要调整存储在 firebase 中的图像大小,但这些图像位于不同的文件夹中,如下所示:

-bucket  
  -user
    -images

我需要转到某些用户的图像,我想应用这个脚本来调整图像的大小

const storage = await getStorage();
const bucketName = `$socialmediaAPG.appspot.com/userId/images/`;
const bucket = storage.bucket(bucketName);
const files = await bucket.getFiles();
for (const file of files[0]) {
  const isImage = file.name.toLowerCase().includes('jpg') || file.name.toLowerCase().includes('jpeg');
  const isThumb = file.name.toLowerCase().includes('thumbs');
  if (isImage && !isThumb) {
    console.info(`Copying ${file.name}`);
    const metadata = await file.getMetadata();
    await file.copy(file.name);
    await file.setMetadata(metadata[0]);
  }
}

我收到此错误:

复制 userId/images/image1.jpg 错误:没有这样的对象:socialmediaAPG.appspot.com/userId/images/image1.jpg

【问题讨论】:

    标签: javascript firebase express google-cloud-firestore google-cloud-functions


    【解决方案1】:

    这似乎是错误的:

    file.copy(file.name)
    

    您传递给file.copy 的参数是destination 文件名,因此您试图将文件复制到自身。

    您可能希望将自定义 thumbs 后缀添加到目标文件名,例如

    file.copy(file.name+"thumbs")
    

    对于实际调整大小,我建议查看其他questions on resizing images in Cloud Storage

    【讨论】:

    • 我发布的代码不适合压缩图片大小?请您帮我解决一下,我已经尝试了很多天了!
    • 您还没有压缩图像。我的答案中的链接显示了许多有关压缩图像的问题,因此我建议您阅读这些问题并自己尝试。如果您已经这样做了,请编辑您的问题以显示您在实际调整大小时的尝试。
    • 我想使用 imageMagick 来缩小尺寸,还是应该购买扩展来缩小尺寸?我读了这个stackoverflow.com/questions/63043201/…
    • 据我所知,该扩展不会调整存储桶中现有文件的大小。调用 ImageMagick 来调整大小是可能的,但您必须为此编写代码。这里有很多好文章:google.com/…。但是您问题中的代码并没有调用任何这些,所以除了我已经回答的(我的猜测)为什么您猜测那个错误之外,我能做的不多。
    猜你喜欢
    • 2019-12-13
    • 2018-01-28
    • 2020-11-12
    • 2017-05-30
    • 2020-06-05
    • 2018-08-28
    • 2011-02-18
    • 2022-08-18
    • 2020-05-10
    相关资源
    最近更新 更多