如何在 Flutter 中通过画廊或相机从所选图像中获取图像(不想在屏幕上显示)?

How to get the Image out of a chosen Image by gallery or camera in Flutter (don't want to show it on screen)?

我有下面的 Flutter/dart 代码,它让我打开相机/图库以 select 一张照片。但我不想立即在屏幕上显示图像(因为它在这里)。我想让图像处理它,所以可能会保存它或获取像 'Image.asset("")' 这样的图像。最重要的是我可以在选择图像后对其进行处理。

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {


  Future<File> imageFile;
  pickImageFromGallery(ImageSource source) {
    setState(() {

    });
    imageFile = ImagePicker.pickImage(source: source);
  }

  Widget showImage() {
    return FutureBuilder<File>(
      future: imageFile,
      builder: (BuildContext context, AsyncSnapshot<File> snapshot) {
        if (snapshot.connectionState == ConnectionState.done && snapshot.data != null) {
          return Image.file(
            snapshot.data,
            width: 300,
            height: 300,
          );

        }
        else {
          return Text("error");
        }
      },
    );
  }

  bildmachen(ImageSource quelle) {
    pickImageFromGallery(quelle);
    Widget bildAusgabe = showImage();
    Navigator.of(context).push(MaterialPageRoute(
        builder: (BuildContext context) => Bildzeige(bildAusgabe)));

  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            showImage,
            RaisedButton(
              child: Text("gehtschon?"),
              onPressed: () {
                bildmachen(ImageSource.gallery);
              },
            ),
          ],
        ),
      ),
      backgroundColor: Colors.yellowAccent,
    );
  }
}

谢谢

如果要将ImagePicker中选择的图片保存到File对象中 你可以这样做

File _imageFile;
final picker = ImagePicker();
.
.
.
Future getImage() async {
    final pickedFile = await picker.getImage(source: ImageSource.gallery);

    setState(() {
      if (pickedFile != null) {
        _imageFile = File(pickedFile.path);
      }
    });
  }
// the getImage() method will opens the ImagePicker and the selected image will be stored in _imageFile

我希望这个解决方案对您有所帮助