image - Flutter:如何将 Canvas/CustomPainter 保存到图像文件中?

我正在尝试从用户那里收集签名并将其保存到图像中。我已经做到了可以在屏幕上绘图的距离,但现在我想单击一个按钮以保存到图像并存储在我的数据库中。

这是我目前所拥有的:

import 'package:flutter/material.dart';

class SignaturePadPage extends StatefulWidget {
  SignaturePadPage({Key key}) : super(key: key);

  @override
  _SignaturePadPage createState() => new _SignaturePadPage();
}
class _SignaturePadPage extends State<SignaturePadPage> {

  List<Offset> _points = <Offset>[];

  @override
  Widget build(BuildContext context) {
    return Container(
      color: Colors.white,
      child: GestureDetector(
        onPanUpdate: (DragUpdateDetails details) {
          setState(() {
            RenderBox referenceBox = context.findRenderObject();
            Offset localPosition =
            referenceBox.globalToLocal(details.globalPosition);
            _points = new List.from(_points)..add(localPosition);
          });
        },
        onPanEnd: (DragEndDetails details) => _points.add(null),
        child: new CustomPaint(painter: new SignaturePainter(_points)),
      ),
    );
  }
}

class SignaturePainter extends CustomPainter {
  SignaturePainter(this.points);
  final List<Offset> points;
  void paint(Canvas canvas, Size size) {
    Paint paint = new Paint()
      ..color = Colors.black
      ..strokeCap = StrokeCap.round
      ..strokeWidth = 5.0;
    for (int i = 0; i < points.length - 1; i++) {
      if (points[i] != null && points[i + 1] != null)
        canvas.drawLine(points[i], points[i + 1], paint);
    }
  }
  bool shouldRepaint(SignaturePainter other) => other.points != points;
}

不知道从那里去哪里......

最佳答案

您可以捕获 CustomPainter 的输出与 PictureRecorder .通过您的PictureRecorder Canvas 的构造函数的实例. PicturePictureRecorder.endRecording 返回然后可以转换为 ImagePicture.toImage .最后,使用 Image.toByteData 提取图像字节.

这是一个例子:https://github.com/rxlabz/flutter_canvas_to_image

https://stackoverflow.com/questions/50320479/

相关文章:

amazon-web-services - 如何在不使用原生 SDK 的情况下使用 AWS Cogn

Flutter - 我想将变量从一个类传递到另一个类

dart - 使用 Navigator.popUntil 和没有固定名称的路由

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

flutter - 如何在 flutter 中加载所有 dart DateFormat 语言环境?

dart - 如何在 Flutter 中创建带有圆角的自定义模糊形状

dart - 添加点击功能 flutter

android - Flutter Launcher 图标没有改变?

dart - 如何在 flutter 中做悠悠球动画?

dart - Flutter Navigator.replace() 示例