在 OpenHarmony 中截屏(截图)有多种方式,取决于你是指 系统/应用层截屏 还是 应用内获取界面图像。下面按常见场景说明。
componentSnapshot(ArkUI,推荐)适用于 ArkUI(eStage / eTS)应用,截取某个组件或页面。
import componentSnapshot from '@ohos.arkui.componentSnapshot';
// 截取整个页面
componentSnapshot.get('currentPage', (error, pixmap) => {
if (error) {
console.error('snapshot failed', error);
return;
}
// pixmap 是 image.PixelMap
});
在 UI 中给根容器设置 id:
Column() {
// UI 内容
}
.id('currentPage')
✅ 优点:
screenshot 接口(系统应用)import screenshot from '@ohos.screenshot';
screenshot.save({
displayId: 0,
format: 'png',
quality: 100
}, (err, path) => {
if (err) {
console.error('screenshot failed', err);
return;
}
console.info('screenshot saved:', path);
});
⚠️ 限制:
"reqPermissions": [
"ohos.permission.CAPTURE_SCREEN"
]
hdc shell snapshot_display
或指定保存路径:
hdc shell snapshot_display /data/local/tmp/screen.png
hdc file recv /data/local/tmp/screen.png ./
✅ 适合:
import image from '@ohos.multimedia.image';
import fileio from '@ohos.fileio';
const imagePacker = image.createImagePacker();
imagePacker.packToData(pixelMap, {
format: 'image/png',
quality: 100
}, (err, data) => {
// 写入文件
});
| 场景 | 是否可行 |
|---|---|
| 普通应用截系统屏 | ❌ |
| 普通应用截自己界面 | ✅ |
| 系统应用截屏 | ✅ |
| 调试截屏 | ✅ |
componentSnapshothdc snapshot_display如果你能说明:
我可以给你 更精确的代码示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。