我的最终目标是能够通过传递原始图像数据或将图像保存到磁盘以共享本机android/ios服务来共享动态图像.如何将一个Widget或一个Canvas颤动转换为原始图像数据(如byte[])?
现在有支持.你可以使用RenderRepaintBoundry或OffsetLayer或Scene.他们都有一个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);
  }
这是从文档中复制的.
您可能还想知道此时,您需要切换到RenderRepaintBoundry通道,因为OffsetLayer尚未合并.如果您需要切换,请运行:
  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);
  }
目前在 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 树的位图,我们很乐意听到它。请提供有关上述问题的更多背景信息!
| 归档时间: | 
 | 
| 查看次数: | 3657 次 | 
| 最近记录: |