截图并保存成文件 - Capture
函数简介
抓取指定区域(x1, y1, x2, y2)的图像并保存为文件。此函数可以根据文件后缀名自动识别保存格式,支持BMP、PNG、JPG等常见图片格式。适用于需要截取屏幕或窗口特定区域的场景。
接口名称
Capture
DLL调用
int Capture(long ola, int x1, int y1, int x2, int y2, string file)
参数定义:
ola
(长整型数): OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。x1
(整型数): 区域的左上X坐标y1
(整型数): 区域的左上Y坐标x2
(整型数): 区域的右下X坐标y2
(整型数): 区域的右下Y坐标file
(字符串): 保存的文件名,支持相对路径和绝对路径。如果使用相对路径,文件将保存在SetPath设置的目录下
示例:
// 截取整个客户区并保存为BMP
int result = Capture(ola, 0, 0, 0, 0, "screen.bmp");
if (result == 1) {
printf("截图保存成功\n");
} else {
printf("截图保存失败\n");
}
// 截取指定区域并保存为PNG
int result = Capture(ola, 100, 100, 300, 300, "region.png");
if (result == 1) {
printf("截图保存成功\n");
} else {
printf("截图保存失败\n");
}
// 使用绝对路径保存
int result = Capture(ola, 0, 0, 0, 0, "D:/screenshots/screen.jpg");
if (result == 1) {
printf("截图保存成功\n");
} else {
printf("截图保存失败\n");
}
COM调用
int Capture(int x1, int y1, int x2, int y2, string file)
参数定义:
x1
(整型数): 区域的左上X坐标y1
(整型数): 区域的左上Y坐标x2
(整型数): 区域的右下X坐标y2
(整型数): 区域的右下Y坐标file
(字符串): 保存的文件名,支持相对路径和绝对路径。如果使用相对路径,文件将保存在SetPath设置的目录下
示例:
# 截取整个客户区并保存为BMP
result = ola.Capture(0, 0, 0, 0, "screen.bmp")
if result == 1:
messagebox("截图保存成功")
else:
messagebox("截图保存失败")
# 截取指定区域并保存为PNG
result = ola.Capture(100, 100, 300, 300, "region.png")
if result == 1:
messagebox("截图保存成功")
else:
messagebox("截图保存失败")
# 使用绝对路径保存
result = ola.Capture(0, 0, 0, 0, "D:/screenshots/screen.jpg")
if result == 1:
messagebox("截图保存成功")
else:
messagebox("截图保存失败")
返回值
整型数:
- 0: 截图保存失败
- 1: 截图保存成功
注意事项
- 坐标范围必须有效,否则可能导致截图失败
- 文件路径必须有效,且目标目录必须存在
- 文件后缀名决定保存格式,支持.bmp、.png、.jpg等
- 如果文件已存在,将被覆盖
- 使用相对路径时,文件将保存在SetPath设置的目录下
- 建议在保存前检查目标目录的写入权限
- 截图区域不要超出屏幕范围
- 保存JPG格式时可能会有一定的压缩损失
- 建议使用绝对路径以避免路径解析问题
- 如果目标目录不存在,需要先创建目录