使用以下代码:
function captureScreen(size) {
navigator.webkitGetUserMedia({
audio: false,
video: {
mandatory: {
chromeMediaSource: 'desktop',
minWidth: size.width,
maxWidth: size.width,
minHeight: size.height,
maxHeight: size.height,
minFrameRate: 1,
maxFrameRate: 1
}
}
}, gotStream, getUserMediaError);
function gotStream(stream) {
var video = document.createElement('video');
video.addEventListener('loadedmetadata',function(){
var canvas = document.createElement('canvas');
canvas.width = this.videoWidth;
canvas.height = this.videoHeight;
var context = canvas.getContext("2d");
context.drawImage(this, 0, 0);
},false);
video.src = URL.createObjectURL(stream);
}
function getUserMediaError(e) {
console.log('getUserMediaError: ' + JSON.stringify(e, null, '---'));
}
}
给我以下结果:
请注意图像的右侧是如何略微包裹在左侧的?出于某种原因,这种情况发生在我的笔记本电脑(1366x768),朋友的笔记本电脑(1366x768)上,而不是我的桌面(3840x1080双屏)。传递给函数的size
参数始终是整个桌面区域的正确和实际大小。即使我硬编码最小和最大宽度/高度,我得到相同的结果。有没有什么办法解决这一问题?我做错了吗?
我正在构建一个需要截取用户桌面截图的Electron应用程序。网页上还没有其他内容,我正在使用重置CSS。