【问题标题】:Save Image From ImagePicker Locally as a Memory(cache)将 ImagePicker 中的图像本地保存为内存(缓存)
【发布时间】:2022-01-16 08:40:47
【问题描述】:

我想将 ImagePicker 中的图像保存为内存但发生错误。你能帮我这个功能吗,如果需要另一个功能来加载图像,请在下面提到它。

Uint8List? memoryImage;
  Future getImage() async {
    
     final picker = ImagePicker();
          final image = await picker.getImage(source: ImageSource.camera);

          if (image == null) return;
          final Directory directory = await getApplicationDocumentsDirectory();
          final path=directory.path;
          final Filename=basename(image.path);
          File file = File('$directory/$Filename.jpg');
        final bytes = await file.readAsBytes();
        final byte1=  file.writeAsBytes(bytes);
        

    setState(() {
      memoryImage = byte1 as Uint8List?;
    });
   
  }

【问题讨论】:

  • 错误是什么??
  • 未处理的异常:FileSystemException:无法打开文件,路径='目录:'/data/user/0/com.example.demoim/app_flutter'/be0154b3-922c-4ac8-9f52-e22ca0dd05984540658051800379501.jpg .jpg'(操作系统错误:没有这样的文件或目录,errno = 2)

标签: flutter dart flutter-layout flutter-web


【解决方案1】:

通过这一行,您可以将图像字节写入文件。

File imageFile = await File(fileSavePath).writeAsBytes(imageBytes);

从你需要使用的文件中访问 Uint8List

Uint8List memoryImage = File(imagePath).readAsBytesSync();

或者

Uint8List memoryImage = await File(imagePath).readAsBytes();

您的代码中的问题是您将文件分配给 Uint8List。这就是我猜的错误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多