28

My end goal is to be able to share a dynamic image by either passing the raw image data or saving the image to disk for a native android/ios service to share. How would I convert a Widget or Canvas in flutter to raw image data (like byte[])?

4

3 回答 3

33

现在有对此的支持。您可以使用RenderRepaintBoundryOffsetLayerScene。他们都有一个toImage. 这是RenderRepaintBoundry.toImage()的链接

  Future<void> _capturePng() async {
    RenderRepaintBoundary boundary = globalKey.currentContext.findRenderObject();
    ui.Image image = await boundary.toImage();
    ByteData byteData = await image.toByteData(format: ui.ImageByteFormat.png);
    Uint8List pngBytes = byteData.buffer.asUint8List();
    print(pngBytes);
  }

这是从文档中复制的。

于 2018-05-15T13:25:49.190 回答
5

目前在 FlutterView 中运行的 Dart 代码目前无法实现这一点,但是我们在实现这样的文件跟踪方面存在错误:https ://github.com/flutter/flutter/issues/6774

可以将 Flutter 小部件渲染为 FlutterView 的一部分,然后在 FlutterView 上使用 Java 或 Objective-C 接口来捕获图片,例如 FlutterView 实现的标准 android.View.getBitmap: https://docs.flutter。 io/javadoc/io/flutter/view/FlutterView.html#getBitmap--

如果这对您的应用程序需求很重要,并且希望能够从 Dart 代码中捕获 Widget 树的位图,我们很乐意听到它。请感到鼓舞就上述参考问题提供进一步的背景信息!

于 2017-02-07T23:25:10.683 回答
4

您可以使用Screenshot package来获得您想要image的。widget

https://pub.dev/packages/screenshot

于 2021-06-30T07:37:57.880 回答