在Google Cloud Function中,我是否可以访问GraphicsMagicks或ImageMagicks?

8

我想创建一个谷歌云函数来正确地设置上传文件的内容类型。我知道如何使用GraphicsMagick或ImageMagick实现这一点,但我不确定谷歌云函数是否拥有这些原生库。那么,我应该如何找出它们是否存在,如果不存在该怎么办?

1个回答

14

谷歌云函数在一个已安装ImageMagick的容器中运行。不知何故,Firebase 文档似乎是最佳文档来源。从那里可以看到:

Cloud Functions提供了一个名为ImageMagick的图像处理程序,可以对图形图像文件执行操作。以下是如何为上传的图像文件创建缩略图的示例:

    // Download file from bucket.
    const bucket = gcs.bucket(fileBucket);
    const tempFilePath = `/tmp/${fileName}`;
    return bucket.file(filePath).download({
      destination: tempFilePath
    }).then(() => {
      console.log('Image downloaded locally to', tempFilePath);
      // Generate a thumbnail using ImageMagick.
      return exec(`convert "${tempFilePath}" -thumbnail '200x200>' "${tempFilePath}"`).then(() => {
        console.log('Thumbnail created at', tempFilePath);
        // We add a 'thumb_' prefix to thumbnails file name. That's where we'll upload the thumbnail.
        const thumbFilePath = filePath.replace(/(\/)?([^\/]*)$/, `$1thumb_$2`);
        // Uploading the thumbnail.
        return bucket.upload(tempFilePath, {
          destination: thumbFilePath
        });
      });
    });

这段代码执行ImageMagick命令行程序convert,创建一个200x200的图像缩略图并将其上传回Cloud Storage。

另请参阅Firebase函数示例存储库,了解如何使用它:https://github.com/firebase/functions-samples/tree/master/generate-thumbnail


很野啊,我看到了,但不确定是不是“同一个”云函数。可惜他们没有详细说明如何安装其他二进制文件。 - krainboltgreene
2
你可以将其他二进制文件安装到与函数相同的文件夹中。Jason 或 Bret 在最近的演讲中解释了这一点。 - Frank van Puffelen
非常感谢@frank-van-puffelen,这让我很有道理。我太沉迷于软件包管理器的世界了,忘记了我可以直接发布二进制文件。 - krainboltgreene
2
我也一样:我必须从我们的云专家那里学习。我才意识到这不仅仅是在视频中,还在这里:https://dev59.com/2lgQ5IYBdhLWcg3wcTaH - Frank van Puffelen
1
@FrankvanPuffelen,你有添加二进制文件的链接吗?我遇到了一些问题,无法使exec返回127错误代码。 - bryan
请记住,他们提供给您的是convert而不是带有magick的完整软件包。 - alex88

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接