没有 3D WebGL 内容的离子屏幕截图
Ionic screenshot without 3D WebGL content
我用 3D webgl 创建了一个离子应用 canvas。
我尝试截取我的 html 的屏幕截图,包括带有以下代码的 webgl 内容(来自 https://www.npmjs.com/package/com.darktalker.cordova.screenshot):
navigator.screenshot.save(function(error, res) {
if (error) {
console.error(error);
} else {
console.log('screenshot saved in: ', res.filePath);
defer.resolve(res.filePath);
}
}, extension, quality, filename);
屏幕截图成功,但渲染的 3d canvas 丢失。我不知道为什么会这样。你能给我一个提示吗?
对于遇到同样问题的人,我使用以下解决方法解决了它:
直接在你的<canvas id="cv" ></canvas>
下面加一个<img id="placeholder" src=""/>
,修改截图功能如下:
render();
var data = document.getElementById("cv").toDataURL();
document.getElementById("placeholder").src = data;
window.setTimeout(function(){
navigator.screenshot.save(function(error, res) {
if (error) {
console.error(error);
} else {
console.log('screenshot saved in: ', res.filePath);
defer.resolve(res.filePath);
}
document.getElementById("placeholder").src = "";
}, extension, quality, filename);
return defer.promise;
},1000);
确保添加延迟,以便 DOM 可以在截屏之前更新!
我用 3D webgl 创建了一个离子应用 canvas。 我尝试截取我的 html 的屏幕截图,包括带有以下代码的 webgl 内容(来自 https://www.npmjs.com/package/com.darktalker.cordova.screenshot):
navigator.screenshot.save(function(error, res) {
if (error) {
console.error(error);
} else {
console.log('screenshot saved in: ', res.filePath);
defer.resolve(res.filePath);
}
}, extension, quality, filename);
屏幕截图成功,但渲染的 3d canvas 丢失。我不知道为什么会这样。你能给我一个提示吗?
对于遇到同样问题的人,我使用以下解决方法解决了它:
直接在你的<canvas id="cv" ></canvas>
下面加一个<img id="placeholder" src=""/>
,修改截图功能如下:
render();
var data = document.getElementById("cv").toDataURL();
document.getElementById("placeholder").src = data;
window.setTimeout(function(){
navigator.screenshot.save(function(error, res) {
if (error) {
console.error(error);
} else {
console.log('screenshot saved in: ', res.filePath);
defer.resolve(res.filePath);
}
document.getElementById("placeholder").src = "";
}, extension, quality, filename);
return defer.promise;
},1000);
确保添加延迟,以便 DOM 可以在截屏之前更新!