signature_image_util.dart 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import 'dart:async';
  2. import 'dart:io';
  3. import 'dart:typed_data';
  4. import 'dart:ui' as ui;
  5. import 'dart:ui';
  6. import 'package:kmpdfkit_demo/widgets/function/attrwidget/attr_signature_list_widget.dart';
  7. import 'package:path_provider/path_provider.dart';
  8. /// signature_image_util.dart
  9. ///
  10. /// Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
  11. ///
  12. /// THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
  13. /// AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
  14. /// UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
  15. /// This notice may not be removed from this file.
  16. class SignatureImageUtil {
  17. static Future<String?> saveByteDataImage(ui.Image? image) async {
  18. ByteData? byteData = await image?.toByteData(format: ImageByteFormat.png);
  19. final pngBytes = byteData?.buffer.asUint8List();
  20. // 写入文件
  21. final directory = await getApplicationDocumentsDirectory();
  22. Directory folder = Directory('${directory.path}/pdfview/signature/');
  23. folder.createSync(recursive: true);
  24. String path =
  25. '${folder.path}/signature_image_${DateTime.now().millisecond}.png';
  26. final file = File(path);
  27. await file.writeAsBytes(pngBytes!.toList());
  28. return file.existsSync() ? path : null;
  29. }
  30. static Future<List<SignatureImageBean>> signatureImages() async {
  31. final directory = await getApplicationDocumentsDirectory();
  32. String path = '${directory.path}/pdfview/signature/';
  33. final folder = Directory(path);
  34. if (!await folder.exists()) {
  35. return [];
  36. }
  37. final fileList = await folder.list().toList();
  38. final files = <SignatureImageBean>[];
  39. for (final entity in fileList) {
  40. if (entity is File) {
  41. files.add(SignatureImageBean(File(entity.path), false));
  42. }
  43. }
  44. return files;
  45. }
  46. static void delete(List<SignatureImageBean> list) async {
  47. for (var value in list) {
  48. value.file.delete();
  49. }
  50. }
  51. }