javascript - 我可以在 javascript 中组合画布和图像元素吗?
问题描述
我想将我的“图像”变量转换为画布类型并将其与“画布”变量(框)元素结合起来创建另一个画布元素。这个输出画布将在后面有图像,在前面有框的画布。我指的是http://jsfiddle.net/bnwpS/878/
HTML:
<div id="output"></div>
Javascript:
const container = document.getElementById("output");
const image = await faceapi.bufferToImage(imageUpload.files[0]);
const canvas = faceapi.createCanvasFromMedia(image);
container.append(image);
container.append(canvas);
我尝试过一件事但没有成功:
- 使用 createElement('canvas') 创建了另一个画布元素,然后使用 drawImage() 在其上绘制图像和画布,但是结果显示为黑色。
解决方案
尝试使用此函数将图像写入画布:
function writeImageToCanvas(image, cvs) {
const img = document.createElement('img');
return new Promise(resolve => {
img.onload = () => {
cvs.width = img.width;
cvs.height = img.height;
const ctx = cvs.getContext('2d');
ctx.drawImage(img, 0, 0);
resolve();
};
img.src = image.src;
});
}
请注意,这是一个异步函数,因此需要使用writeImageToCanvas(img,cvs).then(...
或使用 await 并将调用函数标记为异步。
推荐阅读
- javascript - 无法添加到从状态复制的对象数组
- python - 如何使用 OOP 将标签添加到另一个窗口 tkinter
- r - 是否有一个 R 循环函数(data.table)可以在不超过内存限制的情况下运行 100 多个“gam”结果?
- python - Tkinter - 在组合框中调节菜单或多选的显示项目数
- typescript - 打字稿 - 向函数的参数添加一个参数
- java - E/Volley: com.android.volley.ParseError: org.json.JSONException: Value {"results":[{
- bash - Bash 和 Zsh 提示响铃并显示最后一个命令的错误代码
- encryption - 如何使用标志-nosalt -base64和-md sha256解密openssl加密文件?
- image - 在 Hybris 中安装/设置图像魔法?
- c# - MultiBinding to Value 在 WPF .Net CORE 3 中不起作用