Flutter将图片保存在Gallery文件夹中

时间:2019-07-24 15:53:01

标签: flutter

我目前正在使用一个警告框,可以选择拍照或从图库中选择图片。

到目前为止的状态是:

我可以使用ImagePicker从图库中获取图片,这非常有效。

现在我要解决我的问题:

保存捕获的图像也可以,但是它保存在存储器中,因此不会显示在图库中。请帮助我

图片警报框:https://imgur.com/a/IhZ5Sgh

图像空的rencent文件夹 https://imgur.com/a/W3FvPtS

制作的图片:https://imgur.com/a/VIZOTBH

这是存储图像的路径:

文件:“ / storage / emulated / 0 / Android / data / com.example.supportanfrage / files / Pictures / 1cd284f4-3632-4ed8-8c6a-14d7be83a8335698897692938961258.jpg”

保存图像的方法

Future getAndSaveImage() async {
    final File image = await ImagePicker.pickImage(source: ImageSource.camera);
    debugPrint(image.toString());
    if (image == null) return;

    final directory = await getExternalStorageDirectory();
    final String path = directory.path;
    this._fileName = path;
    final File localImage = await image.copy(path);
  }

I using the following dependencies / plugins:

file_picker: ^1.3.8
camera: ^0.5.2+2
image_picker: ^0.6.0+17
image_gallery_saver: ^1.1.0
path_provider: ^1.1.2

Thanks.

1 个答案:

答案 0 :(得分:0)

这是为抖动照相机插件提供的sample source code。需要时间戳,然后将带有该timeStampValue.jpg名称的照片保存在手机存储中。

Future<String> takePicture() async {
    if (!controller.value.isInitialized) {
      return null;
    }
    String timestamp() => DateTime.now().millisecondsSinceEpoch.toString();
    final Directory extDir = await getApplicationDocumentsDirectory();
    final String dirPath = '${extDir.path}/Pictures/flutter_test';
    await Directory(dirPath).create(recursive: true);
    final String filePath = '$dirPath/${timestamp()}.jpg';

    if (controller.value.isTakingPicture) {
      return null;
    }

    try {
      await controller.takePicture(filePath);
    } on CameraException catch (e) {
      return null;
    }
    return filePath;
  }