dart - 如何使用 dart 截取特定应用程序?

标签 dart operating-system screenshot

使用此代码,我可以获得整个屏幕的屏幕截图,但是如何在桌面操作系统上使用 dart 获得特定应用程序的屏幕截图?
(https://stackoverflow.com/questions/51117958/how-to-take-a-screenshot-of-the-current-widget-flutter#:~:text=To%20take%20a%20screenshot%20of%20your%20widget%2C%20make,app%20folder%2C%20and%20run%20your%20widget%2C%20like%20this%3A - 也不是一个整体,至少在桌面操作系统上不是)

RenderRepaintBoundary boundary = previewContainer.currentContext.findRenderObject();
ui.Image image = await boundary.toImage();
final directory = (await getApplicationDocumentsDirectory()).path;
ByteData byteData = await image.toByteData(format: ui.ImageByteFormat.png);
Uint8List pngBytes = byteData.buffer.asUint8List();
print(pngBytes);
File imgFile =new File('$directory/screenshot.png');
imgFile.writeAsBytes(pngBytes);

最佳答案

Using this code I could get a screenshot of a whole screen


这并不是您显示的代码的真正作用。该代码指示应用程序中的 Flutter 渲染器将某些内容渲染到图像上。让您自己的应用程序将其部分或全部 UI 绘制到图像而不是屏幕上与获取屏幕截图完全不同;后者涉及向操作系统询问渲染到屏幕的所有内容的输出,发布操作系统级别的合成。在移动设备上,应用程序通常是全屏的,这些东西可能有相似的输出,但它们根本不是一回事。
没有可以截取实际屏幕截图的 Dart API。您必须编写使用 native 操作系统 API 的 native 代码,以便在您想要支持的每个桌面操作系统上截取屏幕截图,并通过 FFI 调用该代码(或者,如果您在示例代码中使用 Flutter,则可以使用平台 channel ) .

关于dart - 如何使用 dart 截取特定应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63252392/

相关文章:

dart - Flutter - 如何更改选定的文本颜色?

android - Flutter - Image.network 失败时的默认图像

c - 流程管理数据结构和流程控制

java - JWindow 区域不透明度

ios - 如何在 iOS 中获取谷歌地图的快照

dart - Flutter:如何向本地通知添加按钮

android - 如何在 Flutter for android 中创建这种线性渐变不透明度效果?

go - 如何从 exec 命令获取错误消息

python - 如何使用命令行在 Windows 中启用端口?

用于本地化的 Xcode 11 导出不起作用,禁用包括屏幕截图功能,并且在测试日志中找不到 XCUITest 屏幕截图附件