gpt4 book ai didi

javascript - 如何将 Canvas 作为图像保存到 Firebase 存储?

转载 作者:数据小太阳 更新时间:2023-10-29 03:53:27 26 4
gpt4 key购买 nike

我正在尝试将 Canvas 作为图像保存到 Firebase 存储中。我已经阅读了很多关于将 Canvas 保存到服务器的文章和问题,并尝试用下面的代码来实现。

function server(){
canvas = document.getElementById("c");
var storageRef = firebase.storage().ref();
var mountainsRef = storageRef.child('mountains.jpg');
var image = new Image();
image.src = canvas.toDataURL("image/png");
var uploadTask = storageRef.child('images/' + "apple").put(image);
uploadTask.on('state_changed', function(snapshot){
// Observe state change events such as progress, pause, and resume
// See below for more detail
}, function(error) {
// Handle unsuccessful uploads
}, function() {
// Handle successful uploads on complete
// For instance, get the download URL: https://firebasestorage.googleapis.com/...
var downloadURL = uploadTask.snapshot.downloadURL;
});
}

但是当我运行网络应用程序时,控制台显示错误:

FirebaseError: Firebase Storage: Invalid argument in put at index 0: Expected Blob or File.

如何将 Canvas 成功保存到 Firebase 存储?

最佳答案

是的,这是可能的。您遇到的问题是您正在尝试上传 dataUrl,但 firebase 的 put 函数仅排除 blob 或文件。要将 Canvas 转换为 blob,请使用 toBlob 函数。

canvas.toBlob(function(blob){
var image = new Image();
image.src = blob;
var uploadTask = storageRef.child('images/' + "apple").put(blob);
});

编辑:将 var uploadTask = storageRef.child('images/' + "apple").put(image); 更改为 var uploadTask = storageRef.child('images/' + "苹果").put(blob);

也不确定这是否适用于您的情况,当我尝试它时,我遇到了受污染的 Canvas 错误。

对我有用的是这个问题的答案 How to convert dataURL to file object in javascript?

关于javascript - 如何将 Canvas 作为图像保存到 Firebase 存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37873808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com