我在ember.js工作,我的项目有一个图像裁剪机制。默认情况下,这会返回一个画布对象和重绘裁剪图像所需的一些数据。
但是当我尝试将canvas对象保存到firebase时,它将其保存为类似[htmlObject Canvas]
之类的东西,所以当我尝试获取记录并显示画布时,它会显示而不是实际的画布对象
如何将画布对象保存到firebase以便稍后用作实际画布。
答案 0 :(得分:3)
您必须序列化和反序列化图像:
function serialize(canvas) {
return canvas.toDataURL();
}
function deserialize(data, canvas) {
var img = new Image();
img.onload = function() {
canvas.width = img.width;
canvas.height = img.height;
canvas.getContext("2d").drawImage(img, 0, 0);
};
img.src = data;
}
基于this answer。
canvas.toDataURL()
方法能够通过压缩将数据压缩为JPEG。与PNG相比,使用甚至95%的质量将大大降低照片的文件大小。
使用此:
canvas.toDataURL({
format: 'jpeg',
quality: 0.9
});
基于this answer。