javascript - 如何将fabric js画布同步转换为具有背景的图像?
问题描述
首先,我从另一个画布获取织物 js 画布背景的图像 url(blob 或 data64)。我检查了 setBackgroundImage 效果很好。
但是当我尝试将fabric js的画布保存到图像时,背景图像消失了。它不存在。我怀疑这是因为 setBackgroundImage 函数是异步的。
我该如何解决?我想让它同步...
saveResultImg(src) {
//set fabric js canvas's background
canvas.setBackgroundImage(
src,
canvas.renderAll.bind(canvas)
);
//save fabric js canvas with it's background to image
const resultImg = new Image();
resultImg.src = canvas.toDataURL('image/png');
return resultImg;
}
解决方案
该setBackgroundImage
方法包括回调。通过将您的 toDataURL 调用移动到 setBackgroundImage 回调中,然后向您的函数添加一个回调,您将能够在图像准备好后使用该回调对图像执行某些操作。
把函数改成这样:
function saveResultImg(src, callback) {
//set fabric js canvas's background
canvas.setBackgroundImage(src, function() {
canvas.renderAll.bind(canvas)
//save fabric js canvas with it's background to image
const resultImg = new Image();
resultImg.src = canvas.toDataURL('image/png');
callback(resultImg);
});
}
然后像这样调用它:
saveResultImg(src, function(img) {
//image is ready
console.log(img);
});
推荐阅读
- javascript - JSON.stringify 如何自动将 moment 对象转换为 iso 字符串?
- python - python - 如何基于单词字典在python中生成单词金字塔?
- database - 一般问题 - 我如何熟悉 PostgreSQL 数据库?
- java - Java 是否优化循环检查?
- python - 如何从框架中获取文件路径
- ios - 使用警报操作更新对象(行)后从 firebase 重新加载数据
- linux - linux diff文件夹和文件结构
- reactjs - create-react-app 中的 Polyfill 不起作用
- docker - 如何在 Docker 上安装 RabbitMQ?
- c - valgrind 使用 getline 函数报告内存丢失