Flutter如何将图像文件保存到图库中的新文件夹? [英] Flutter How to save Image file to new folder in gallery?
问题描述
我想从相机获取文件后将图像保存在图库中,如何创建新目录并保存从相机获取的图像文件?
I want to save the image in the gallery after I get the file from the camera, how to create a new directory and save the image file that we have obtained from the camera?
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";
});
推荐答案
您需要将图像保存到外部存储目录中,以便在图库中显示图像. 无需获取临时目录,而是获取外部存储目录.
You need to save the image into external storage directory for showing the image on gallery. Instead of getting temporary directory, obtain external storage directory.
final directory = await getExternalStorageDirectory();
您需要在android/app/src/main
文件夹的AndroidManifest.xml
文件上提供权限
You need to provide the permission on AndroidManifest.xml
file of your android/app/src/main
folder
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
然后假设您要创建一个名为MyImages的文件夹并将新图像添加到该文件夹中,
then let's say that you want to create a folder named MyImages and add the new image to that folder,
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));
要获取文件数量,只需将文件获取到列表中并检查列表的长度
for getting the number of files, just obtain the files to a list and check the length of the list
var listOfFiles = await myImgDir.list(recursive: true).toList();
var count = countList.length;
这篇关于Flutter如何将图像文件保存到图库中的新文件夹?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!