微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将图片保存并加载到/ data / user中

如何解决将图片保存并加载到/ data / user中

我想让用户选择几张图像。确认后,我想将它们串联起来,然后与其他应用程序共享。 串联工作正常,我使用image / image.dart库(图像:^ 2.1.4)将最终的Image编写为ByteStream。为了共享,我使用esys库(esys_Flutter_share:^ 1.0.2)。

import 'package:image/image.dart' as pkg_img;

Future<String> _joinImages(List<Type> ikonList) async {
  Future<List> imageList() async {
    // some logic to get the data
  }
  pkg_img.Image mergedImage;
  final documentDirectory = await getApplicationDocumentsDirectory();
  final String filename = "test.png";
  final String fullFilePath = join(documentDirectory.path,"${filename}");
  FutureBuilder(
    future: imageList(),builder: (context,snapshot) {
      if (!snapshot.hasData) {
        return CircularProgressIndicator();
      } else {
        List<pkg_img.Image> myList = snapshot.data;
        mergedImage = someLogicToConcatenateImages(myList);

        final file = new File(fullFilePath);
        file.writeAsBytesSync(pkg_img.encodePng(mergedImage));
        return null;
      }
  });

  print(fullFilePath);
  return await join(fullFilePath);

}

_shareImage(String fileName) async {
  Uint8List bytes = await _readFileByte(fileName);
  await Share.file('esys image','esys.png',bytes,'image/png',text: 'Sent from My App.');
}




Future<Uint8List> _readFileByte(String filePath) async {
  Uri myUri = Uri.parse(filePath);
  File myFile = new File.fromUri(myUri);
  Uint8List bytes;
  await myFile.readAsBytes().then((value) {
    bytes = Uint8List.fromList(value);
    print('reading of bytes is completed');
  });
  return bytes;
}

单击这样的按钮时将调用整个代码

RaisedButton(
  onpressed: () {
    _joinImages(_ikonList).then(_shareImage);
  },child: Text('Export!'),),

我遇到的错误如下:

I/Flutter (13768): File: '/data/user/0/com.myapp/app_Flutter/test.png'
E/Flutter (13768): [ERROR:Flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: filesystemexception: Cannot open file,path = '/data/user/0/com.myapp/app_Flutter/test.png' (OS Error: No such file or directory,errno = 2)
E/Flutter (13768): #0      _File.open.<anonymous closure> (dart:io/file_impl.dart:366:9)
E/Flutter (13768): #1      _rootRunUnary (dart:async/zone.dart:1134:38)
E/Flutter (13768): #2      _CustomZone.runUnary (dart:async/zone.dart:1031:19)
E/Flutter (13768): #3      _FutureListener.handleValue (dart:async/future_impl.dart:139:18)
E/Flutter (13768): #4      Future._propagatetoListeners.handleValueCallback (dart:async/future_impl.dart:680:45)
E/Flutter (13768): #5      Future._propagatetoListeners (dart:async/future_impl.dart:709:32)
E/Flutter (13768): #6      Future._completeWithValue (dart:async/future_impl.dart:524:5)
E/Flutter (13768): #7      Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:554:7)
E/Flutter (13768): #8      _rootRun (dart:async/zone.dart:1126:13)
E/Flutter (13768): #9      _CustomZone.run (dart:async/zone.dart:1023:19)
E/Flutter (13768): #10     _CustomZone.runGuarded (dart:async/zone.dart:925:7)
E/Flutter (13768): #11     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:965:23)
E/Flutter (13768): #12     _microtaskLoop (dart:async/schedule_microtask.dart:43:21)
E/Flutter (13768): #13     _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)
E/Flutter (13768): 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。