Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript和Canvas元素的奇怪图像行为_Javascript_Html5 Video_Html5 Canvas - Fatal编程技术网

使用Javascript和Canvas元素的奇怪图像行为

使用Javascript和Canvas元素的奇怪图像行为,javascript,html5-video,html5-canvas,Javascript,Html5 Video,Html5 Canvas,我试图利用canvas元素上toDataURL调用的输出 var snapshotjig = document.getElementById("snapParent"); var testOutput = document.createElement('canvas'); var ctxtest = testOutput.getContext('2d'); var imageTest = new Image(); var canvas = capture(video, scaleFactor);

我试图利用canvas元素上toDataURL调用的输出

var snapshotjig = document.getElementById("snapParent");
var testOutput = document.createElement('canvas');
var ctxtest = testOutput.getContext('2d');
var imageTest = new Image();
var canvas = capture(video, scaleFactor);    

imageTest.src = canvas.toDataURL();
ctxtest.drawImage(imageTest,0,0,imageTest.width, imageTest.height);
snapshotjig.appendChild(testOutput);
为了完成,捕获代码如下所示:

function capture(video, scaleFactor) {
    if(scaleFactor == null){
        scaleFactor = 1;
    }
    var w = video.videoWidth * scaleFactor;
    var h = video.videoHeight * scaleFactor;
    var canvas = document.createElement('canvas');
        canvas.width  = w;
        canvas.height = h;
    var ctx = canvas.getContext('2d');
        ctx.drawImage(video, 0, 0, w, h);
    return canvas;
}
在html中有一个id为snapParent的div元素。 捕获函数似乎工作得很好,但我使用的实例toDataUrl然后尝试绘制该输出时得到了不同的结果,此时我在div元素snapParent中得到了图像的一小部分。 不确定是什么原因造成的,或者我做错了什么


如果您对此有任何想法,我们将不胜感激。我试图利用toDataUrl获取图像,并将其用于一个函数中,该函数将使其成为一个交互式拼图,此代码目前获取一个url,用toDataUrl输出替换它应该很简单,我就是搞不明白为什么要裁剪我的图像。

在我看来,好像你忘了设置ctxtest画布的宽度和高度。

更进一步,我发现我使用的画布testOutput没有设置宽度和高度,因此,我使用的浏览器默认值恰好足以显示图像的一小部分。上下文不是您设置大小的地方,而是Pointy的建议让我再次查看画布的维度设置,cheers bud


我使用捕获方法设置testOutput画布大小。

ctxtest是一个上下文。据我所知,你没有在那里设置宽度和高度。