gpt4 book ai didi

google-chrome - 如何在 Chrome 扩展程序中捕获单个 HTML 元素的屏幕截图?

转载 作者:行者123 更新时间:2023-12-04 08:26:16 25 4
gpt4 key购买 nike

我知道有一个 captureVisibleTab ,但是如何剪切选项卡的结果屏幕截图,以便只剩下一个 HTML 元素?

最佳答案

为此,您需要 onMessage , sendMessage , 和 captureVisibleTab . onMessagechrome.runtime的方法, sendMessage , 和 captureVisibleTab都是 tabs 的方法.

舱单

在 list 文件中,您必须添加 tabs , 和 <all_urls>您的 manifest 的权限文件。如果没有权限,这将无法工作。

"permissions": [
"tabs",
"<all_urls>"
],

内容脚本

在您的内容脚本文件中,您需要添加以下内容。这允许您与后台页面进行通信以截取事件选项卡的屏幕截图。

chrome.runtime.sendMessage({ chromeAction: "screenshot" }, function (imageString) {
console.log(imageString);
});

后台脚本/页面

这就是魔法发生的地方。

chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
if (request.chromeAction === "screenshot") {
createScreenshot(function (dataURL) {
createImage(dataURL);
});
return true;
}
});

// here we create a new image
function createImage(dataURL) {
// create a canvas
var canvas = createCanvas(500, 500);
// get the context of your canvas
var context = canvas.getContext('2d');
// create a new image object
var croppedImage = new Image();

croppedImage.onload = function() {
// this is where you manipulate the screenshot (cropping)
// parameter 1: source image (screenshot)
// parameter 2: source image x coordinate
// parameter 3: source image y coordinate
// parameter 4: source image width
// parameter 5: source image height
// parameter 6: destination x coordinate
// parameter 7: destination y coordinate
// parameter 8: destination width
// parameter 9: destination height
context.drawImage(croppedImage, 10, 10, 300, 300, 0, 0, 250, 250);

// canvas.toDataURL() contains your cropped image
console.log(canvas.toDataURL());
};
croppedImage.src = dataURL; // screenshot (full image)
}

// creates a canvas element
function createCanvas(canvasWidth, canvasHeight) {
var canvas = document.createElement("canvas");

// size of canvas in pixels
canvas.width = canvasWidth;
canvas.height = canvasHeight;
return canvas;
}

// calling the captureVisibleTab method takes a screenhot
function createScreenshot(callback) {
// you can have two image formats (jpeg and png)
// for jpeg use { format: "jpeg", quality: 100 } (you can adjust the jpeg image quality from 0-100)
// for png use { format: "png" }
chrome.tabs.captureVisibleTab(null, { format: "png" }, callback);
}

裁剪

为了更好地了解 drawImage Canvas 方法阅读全文 documentation .

关于google-chrome - 如何在 Chrome 扩展程序中捕获单个 HTML 元素的屏幕截图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18309471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com