如何在 Flutter 中将签名板转换为 base64String?

问题描述 投票:0回答:1

如何从flutter中的签名板获取base64String并直接发送到rest而不保存文件?

I'm trying with packages : easy_signature_pad: ^1.0.6 , syncfusion_flutter_signaturepad 23.2.7 ,signature: ^5.4.1 

 void setImage(String bytes) async {
    if (bytes.isNotEmpty) {
      Uint8List convertedBytes = base64Decode(bytes);
      setState(() {
        signatureBytes = convertedBytes;
      });
    } else {
      setState(() {
        signatureBytes = null;
      });
    }
  } 

This is the code I used to convert 

 String uint8ListTob64(Uint8List uint8list) {
    String base64String = base64Encode(uint8list);
    String header = 'data:image/png;base64,';
    return header + base64String;
  }

`但结果不是完整的签名图像。

我需要直接发送到rest api,而不将文件保存在临时位置。 将 base64 发送为 `

"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGUAAALuCAYAAAAHTat/AAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAACAASURBVHic7N1pfFXlvfbxK4QhIyQkJCEDCUNAIDIPQlAZRaGUahXRooIWawVU1KNtlVqk6kFURERLpaJ1ni0yCCKIqExhRqYAAZJACBnIHIaQ58U5h8fN3jskYa9hJ7/vq67/Wnvti8+nqLmy1n37VFZWVgoAAAAAYInZs2fr4YcfdnkuPz9fISEhJicCYJIZDaxOAAAAAAD1Wffu3d2eO3jwoIlJAJiNUgYAAAAALBQaGur2XHl5uYlJAJiNUgYAAAAALBQZGen2XEZGholJAJiNUgYAAAAALBQVFeX23JEjR0xMAsBslDIAAAAAYLG2bdu6nK9YscLkJADMRCkDAAAAABbr16+fy/mBAwdMTgLATJQyAAAAAGCxrl27upxnZ2ebnASAmShlAAAAAMBivXv3djkvKytTZmamyWkAmIVSBgAAAAAsFh8f7/bcyZMnTUwCwEyUMgAAAABgsYSEBLfn8vPzTUwCwEyUMgAAAABgAzExMS7nx48fNzkJALNQygAAAACADURHR7ucs9gvUHdRygAAAACADbh7UobXl4C6i1IGAAAAAGwgLCzM5by0tNTkJADMQikDAAAAADaQmJjocp6ammpyEgBmoZQBAAAAABsIDAy0OgIAk1HKAAAAAIANuFs7pkmTJiYnAWAWShkAAAAAsIFz5865nLOmDFB3UcoAAAAAgA2cP3/e5bygoMDkJADMQikDAAAAADYQHBzscp6Xl2dyEgBmoZQBAAAAABsIDQ11OS8rKzM5CQCzUMoAAAAAgA00atTI5fzs2bMmJwFgFkoZAAAAALCBM2fOuJyfPn3a5CQAzEIpAwAAAAA24G7r66ioKJOTADALpQwAAAAA2MDx48ddznlSBqi7KGUAAAAAwAbcPRHj7rUmAN6PUgYAAAAAbKBnz54u52lpaSosLDQ5DQAzUMo"

结果图 enter image description here

flutter dart dart-pub
1个回答
0
投票

在函数中使用这个变量:

File? file;
 GlobalKey<SfSignaturePadState> signaturePadKey = GlobalKey();

我正在使用此功能将标志保存到图像中:

saveImage() async {
final data = await signaturePadKey.currentState!.toImage(pixelRatio: 3.0);
final imageByteData = await data.toByteData(format: 
ui.ImageByteFormat.png);
Uint8List uint8List = imageByteData!.buffer.asUint8List();
Directory appDocDir = await getApplicationDocumentsDirectory();
String filePath = '${appDocDir.path}/image.png';

file = File(filePath);
file?.writeAsBytesSync(uint8List);
await file?.writeAsBytes(uint8List);
print('Image saved to: $filePath');

}

标牌是:

  SfSignaturePad(
          key: signaturePadKey,
          minimumStrokeWidth: 2,
          maximumStrokeWidth: 4,
          strokeColor: Colors.green,
          backgroundColor: Colors.grey[350],
        ),

来自这个 package pub.dev

© www.soinside.com 2019 - 2024. All rights reserved.