所以我按照Google's official sample创建了一个云存储触发的Firebase功能,该功能将根据上传的图像创建调整大小的缩略图并将其上传到存储。这里简化了:
exports.generateThumbnail = functions.storage.object().onChange(event => {
// get the uploaded file data (bucket, name, type...)
// return if the file is not an image or name begins with "thumb_"
// download the uploaded image in a temporary local file,
// resize it using ImageMagick
// upload it to storage with the name "thumb_<filename>"
}
然而,当新的缩略图上传时,该功能会再次被触发,依此类推。如果上传的文件有一个“thumb_”前缀,他们可以通过返回来避免这种情况。
然后您最终得到两张图片(原件和缩略图),我想用缩略图重写现有图片,所以我只有一张图片带有原始路径。
我不知道如何解决这个问题,因为我不知道如何在没有名称更改的情况下规避重新上载循环。我可以在上传缩略图后删除原始图像,但指向原始图像的链接已经返回并保存在实时数据库中(这些图像是用户的个人资料图片)。
答案 0 :(得分:5)
在查看from tensorflow.user_ops import roi_pooling
npm模块中的bucket.js
文档后,我终于设法用缩略图覆盖原始文件/路径,并避免循环,
可以通过在上传缩略图时附加自定义元数据来完成,并在下次执行该功能时测试该元数据。
我将发布我所做的更改,其余部分与链接的示例相同。
以下是测试:
@google-cloud/storage
这是const filePath = event.data.name
const metadata = event.data.metadata
if (metadata.isThumb) {
console.log('Exiting: Already a thumbnail')
return
}
承诺返回时的部分:
spawn