补全屏幕截图、屏幕取色、获取显示器信息、剪贴板操作

This commit is contained in:
fofolee
2025-01-09 22:43:33 +08:00
parent 682f6d0bcd
commit 378ae7f92f
10 changed files with 420 additions and 83 deletions

View File

@@ -1,10 +1,13 @@
const { findImage } = require("./imageFinder");
const { captureScreen } = require("./screenCapture");
const { keyboardTap, keySequence } = require("./keyboardTap");
const { screenColorPick } = require("./screenColorPick");
const screenCapture = require("./screenCapture");
module.exports = {
findImage,
captureScreen,
screenCapture,
keyboardTap,
keySequence,
screenColorPick,
...screenCapture,
};

View File

@@ -187,7 +187,7 @@ async function captureLinuxScreen() {
}
// 统一的截图接口
async function captureScreen() {
async function captureFullScreen() {
try {
if (process.platform === "darwin") {
return await captureMacScreen();
@@ -202,4 +202,41 @@ async function captureScreen() {
return null;
}
module.exports = { captureScreen };
function captureAreaScreen() {
return new Promise((resolve) => {
window.utools.screenCapture((data) => {
resolve(data);
});
});
}
async function captureScreen(range = "fullscreen") {
return range === "fullscreen"
? await captureFullScreen()
: await captureAreaScreen();
}
async function captureScreenToFile(range = "fullscreen", path = null) {
if (!path) return null;
const result = await captureScreen(range);
if (!result) return null;
fs.writeFileSync(
path,
result.replace("data:image/png;base64,", ""),
"base64"
);
return result;
}
async function captureScreenToClipboard(range = "fullscreen") {
const result = await captureScreen(range);
if (!result) return null;
window.utools.copyImage(result);
return result;
}
module.exports = {
captureScreen,
captureScreenToFile,
captureScreenToClipboard,
};

View File

@@ -0,0 +1,11 @@
const screenColorPick = () => {
return new Promise((resolve) => {
utools.screenColorPick((color) => {
resolve(color);
});
});
};
module.exports = {
screenColorPick,
};