Флаттер Как сохранить файл изображения в новой папке в галерее? - PullRequest
0 голосов
/ 07 февраля 2019

Я хочу сохранить изображение в галерее после получения файла с камеры, как создать новый каталог и сохранить файл изображения, полученный с камеры?

 Future getImageCamera() async {
var imageFile = await ImagePicker.pickImage(
    source: ImageSource.camera, maxHeight: 20.0, maxWidth: 20.0);

DateTime ketF = new DateTime.now();
String baru = "${ketF.year}${ketF.month}${ketF.day}";

//proses kompres
final temDirk = await getTemporaryDirectory();
final pathss = temDirk.path;

int rand = new math.Random().nextInt(100000);

//mengganti nama file
// String juduld = controllerJudul.text;

img.Image gambard = img.decodeImage(imageFile.readAsBytesSync());
img.Image gambarKecilx = img.copyResize(gambard,
    700); //parameter awal adalah sumber gambar // parameter kedua ukuran width, hp=>1k

var kompresimg = new File("$pathss/image_$baru$rand.jpg")
  ..writeAsBytesSync(img.encodeJpg(gambarKecilx, quality: 95));

setState(() {
  _gambar = kompresimg;
  namafile = "image_$baru$rand.jpg";
});

1 Ответ

0 голосов
/ 07 февраля 2019

Вам необходимо сохранить изображение во внешнем каталоге хранения для отображения изображения в галерее.Вместо того, чтобы получить временный каталог, получите внешний каталог хранения.

final directory = await getExternalStorageDirectory();

Вам необходимо предоставить разрешение на AndroidManifest.xml файл вашей папки android/app/src/main

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

, тогда скажем, чтоВы хотите создать папку с именем MyImages и добавить новое изображение в эту папку,

final myImagePath = '${directory.path}/MyImages' ;
final myImgDir = await new Directory(myImagePath).create();

, а затем записать в файл по пути.

var kompresimg = new File("$myImagePath/image_$baru$rand.jpg")
  ..writeAsBytesSync(img.encodeJpg(gambarKecilx, quality: 95));

для получения количества файловпросто получите файлы в список и проверьте длину списка

var listOfFiles = await myImgDir.list(recursive: true).toList();
var count = countList.length;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...