【发布时间】:2017-06-16 20:39:06
【问题描述】:
我的最终目标是能够通过传递原始图像数据或将图像保存到磁盘以供本地 android/ios 服务共享来共享动态图像。如何将颤振中的Widget 或Canvas 转换为原始图像数据(如byte[])?
【问题讨论】:
标签: flutter
我的最终目标是能够通过传递原始图像数据或将图像保存到磁盘以供本地 android/ios 服务共享来共享动态图像。如何将颤振中的Widget 或Canvas 转换为原始图像数据(如byte[])?
【问题讨论】:
标签: flutter
您可以使用 Screenshot package 来获取您想要的widget 中的image。
【讨论】:
现在有对此的支持。您可以使用RenderRepaintBoundry 或OffsetLayer 或Scene。他们都有一个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);
}
这是从文档中复制的。
【讨论】:
目前在 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 树的位图,我们很乐意听到。请鼓励就上述问题提供进一步的背景信息!
【讨论】: