我开发了一个小的chrome扩展,它可以从当前页面截图。问题是,当当前区域的一部分被覆盖时,例如检查器或不在视图中,截图会被裁剪。有没有办法得到全屏?以下是我的代码(精简):
function createScreenshot() {
chrome.tabs.query({active: true, lastFocusedWindow: true}, tabs => {
chrome.tabs.captureVisibleTab({ format: "png" }, function (screenshotUrl) {
cropImage(screenshotUrl, "Screenshot");
});
});
}
function cropImage(url, fileName) {
var img = new Image();
img.onload = function () {
let canvas = document.createElement("canvas");
let ctx = canvas.getContext("2d");
canvas.width = img.width;
canvas.height = img.height;
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
chrome.storage.sync.get(null, function(data) {
downloadImage(canvas, fileName + ".png");
});
};
img.src = url;
}
比如说这是我想用4k分辨率拍摄的页面:
正如你所看到的,它不适合实际的屏幕分辨率,但结果只是有效区域(甚至更小):
有没有办法得到“不可见”的部分?
雷格拉兹马丁
2条答案
按热度按时间wooyq4lh1#
您的代码中有细微的更正
必须在drawImage中传递画布宽度和高度
您需要获取base64字符串
最后,你会得到你想要的结果
希望此解决方案对您有所帮助
bxjv4tth2#
此处建议in reddit