Image 如何将图像转换为文件?

Image 如何将图像转换为文件?,image,flutter,dart,Image,Flutter,Dart,如果图像不是从gallery或camera拍摄的,那么将图像保存到设备的正确方法是什么 在PageA中,有一个摄像头按钮,允许用户捕捉图像。一旦捕获图像,它将转到PageB(编辑图像页面)。用户编辑完图像后,将返回PageA,并将图像保存到设备 PageA @override userImage(File images) async { // when user has captured image, it will run this code if (images != nu

如果图像不是从gallery或camera拍摄的,那么将图像保存到设备的正确方法是什么

在PageA中,有一个摄像头按钮,允许用户捕捉图像。一旦捕获图像,它将转到PageB(编辑图像页面)。用户编辑完图像后,将返回PageA,并将图像保存到设备

PageA

  @override
  userImage(File images) async {  // when user has captured image, it will run this code
    if (images != null) {
      Image image = await Navigator.push(
          context,
          MaterialPageRoute(
            builder: (context) => EditImagePage(images.path), // go to edit image page
          ));
         // convert image to File
         // call copyImage function
    } else {

    }
  }
PageB

 IconButton(
          icon: Icon(Icons.check),
          onPressed: () async {
            Uint8List bytes = await _controller.exportAsPNGBytes();
            var image = Image.memory(bytes);
            return Navigator.pop(context, image);  // bring Image back to PageA
          }),
我有此代码用于将图像保存到设备。如何将其更改为文件

Future<File> copyImage(File image) async {
        var savedDir = await getApplicationDocumentsDirectory();
        String appDocPath = savedDir.path;
        var fileName = FileUtils.basename(image.path);
        return await image.copy('$appDocPath/' + '$fileName');
      }
Future copyImage(文件映像)异步{
var savedDir=等待getApplicationDocumentsDirectory();
字符串appDocPath=savedDir.path;
var fileName=FileUtils.basename(image.path);
返回wait image.copy(“$appDocPath/”+“$fileName”);
}

您可以将映像存储到设备内部存储器,将映像、资产映像转换为文件并存储到设备存储器中

首先,获取图像路径,生成文件并为图像写入字节

您可以编写如下代码:

import 'dart:async';
import 'dart:io';

import 'package:flutter/services.dart' show rootServices;
import 'package:path_provider/path_provider.dart';

Future<File> convertImageToFile(String imagePath) async {
  final byteData = await rootServices.load('assets/$imagePath');

  final file = File('${(await getTemporaryDirectory()).path}/$imagePath');
  await file.writeAsBytes(byteData.buffer.asUint8List(byteData.offsetInBytes, byteData.lengthInBytes));

  return file;
}
导入'dart:async';
导入“dart:io”;
导入“包:flatter/services.dart”显示rootServices;
导入“package:path_provider/path_provider.dart”;
Future convertImageToFile(字符串imagePath)异步{
final byteData=wait rootServices.load('assets/$imagePath');
final file=file('${(wait getTemporaryDirectory()).path}/$imagePath');
wait file.writeAsBytes(byteData.buffer.asUint8List(byteData.offsetInBytes,byteData.lengthInBytes));
返回文件;
}
需要存储访问权限,别忘了