跳到主要内容

屏幕捕获

ssf.Frame 高速屏幕捕获,捕获后可直接转为图像对象直接处理

ssf.Frame 功能概述

主要用于高速捕获屏幕,捕获出来的可以转为字节数据或者Image对象,前者可用于直接传输图像(原始rgb数据),后者可转为图像对象,以便直接用于模板匹配、目标检测等

屏幕信息

定义了获取屏幕尺寸的信息。

属性名类型描述
widthnumber屏幕的宽度
heightnumber屏幕的高度

ssf.Frame 模块

init 方法

初始化 Frame 模块。在调用其他屏幕捕获相关 API 前必须先执行此方法。

ssf.Frame.init(): void;

示例

// 初始化屏幕捕获模块
ssf.Frame.init();

screen 方法

获取当前屏幕图像,并返回图像的字节数组(RGBA 格式)。

ssf.Frame.screen(timeout?: number, max_timeout?: number): ArrayBuffer;

参数

参数名类型描述
timeoutnumber (可选)每次捕获的间隔时间,单位为毫秒。例如,20ms 表示每次图像捕获之间的时间间隔为 20 毫秒。
max_timeoutnumber (可选)最大等待时间(单位为毫秒)。如果捕获过程超过了这个时间,则会触发超时异常。

返回值

  • ArrayBuffer - 包含当前屏幕图像的字节数组(RGBA 格式)。

示例

// 初始化屏幕捕获模块
ssf.Frame.init();

// 获取屏幕图像数据
try {
const imageBuffer = ssf.Frame.screen(20, 5000); // 每次捕获间隔 20ms,最大等待时间 5000ms
console.log('图像数据捕获成功:', imageBuffer);
} catch (error) {
console.error('屏幕捕获错误:', error);
}

screen_info 方法

获取当前屏幕的宽度和高度信息。

ssf.Frame.screen_info(): ScreenInfo;

返回值

  • ScreenInfo - 包含屏幕宽度和高度的对象。

示例

// 初始化屏幕捕获模块
ssf.Frame.init();

// 获取屏幕信息
const screenInfo = ssf.Frame.screen_info();
console.log(`屏幕宽度: ${screenInfo.width}, 高度: ${screenInfo.height}`);

to_image 方法

获取当前屏幕并转换成 ssf.Image 对象,以便于图像的直接处理。

ssf.Frame.to_image(timeout?: number, max_timeout?: number): ssf.Image;

参数

参数名类型描述
timeoutnumber (可选)每次捕获的间隔时间,单位为毫秒。
max_timeoutnumber (可选)最大等待时间(单位为毫秒)。如果捕获过程超过了这个时间,则会触发超时异常。

返回值

  • ssf.Image - 转换后的屏幕图像对象,方便后续操作。

示例

// 初始化屏幕捕获模块
ssf.Frame.init();

// 将屏幕图像转换为图像对象
try {
const image = ssf.Frame.to_image(20, 5000); // 每次捕获间隔 20ms,最大等待时间 5000ms
console.log('图像对象创建成功:', image);
} catch (error) {
console.error('屏幕图像转换错误:', error);
}

完整示例

以下是一个完整的示例,演示了如何初始化屏幕捕获模块,获取屏幕信息,捕获屏幕图像数据,并将其转换为图像对象:

// 初始化屏幕捕获模块
ssf.Frame.init();

// 获取屏幕信息
const screenInfo = ssf.Frame.screen_info();
console.log(`屏幕宽度: ${screenInfo.width}, 高度: ${screenInfo.height}`);

// 获取屏幕图像数据
try {
const imageBuffer = ssf.Frame.screen(20, 5000); // 每次捕获间隔 20ms,最大等待时间 5000ms
console.log('图像数据捕获成功:', imageBuffer);
} catch (error) {
console.error('屏幕捕获错误:', error);
}

// 将屏幕图像转换为图像对象
try {
const image = ssf.Frame.to_image(20, 5000); // 每次捕获间隔 20ms,最大等待时间 5000ms
console.log('图像对象创建成功:', image);
} catch (error) {
console.error('屏幕图像转换错误:', error);
}