从Widget或Canvas创建原始图像

时间:2017-01-31 12:02:11

标签: flutter

我的最终目标是通过传递原始图像数据或将图像保存到磁盘以共享原生android / ios服务来共享动态图像。如何将flutter中的WidgetCanvas转换为原始图像数据(如byte[])?

3 个答案:

答案 0 :(得分:6)

现在有支持。您可以使用RenderRepaintBoundryOffsetLayerScene。他们都有一个toImage。以下是RederRepaintBoundry.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);
  }

这是从文档中复制的。

答案 1 :(得分:3)

目前在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树的位图,我们很乐意听到它。我们感到鼓励为上述问题提供进一步的背景信息!

答案 2 :(得分:0)

您可以使用 Screenshot package 获得您想要的 imagewidget

https://pub.dev/packages/screenshot