【问题标题】:Flutter Image picker with max size of 5 mb最大尺寸为 5 mb 的 Flutter 图像选择器
【发布时间】:2023-01-18 19:25:03
【问题描述】:
我在 flutter 中使用图像选择器包,所以我想提到所选图像的最大大小应为 5 MB,在包中有一个名为 imagequality 的参数取 0-100,但不等于 5 mb
getImageFromGallery() async {
try {
var pickedfiles = await imagePicker.pickMultiImage(imageQuality: 5);
if (pickedfiles.isNotEmpty) {
for (int i = 0; i < pickedfiles.length; i++) {
previewList.add(pickedfiles[i].path);
}
setState(() {});
}
} catch (e) {
log(e.toString());
}
}
【问题讨论】:
标签:
flutter
image
dart
flutter-dependencies
【解决方案1】:
试试这个,我希望这有帮助
selectImagesFromImagePicker() async{
// e.g
final knowSize = await defindSize(fileSelected, 2);
if (double.parse(knowSize.toString()) > 5.0) {
SomeSnackBar("File too large", "Limit is 5 mb below");
} else {
log("$knowSize mb", name: "FILE SIZE");
filesChosen.add(File(x!));
}
}
// Function to know the size of a certain file
defindSize(String? path, int decimals) {
final file = File(path!);
int bytes = file.lengthSync();
log("lengthSync $bytes", name: "FILE SIZE");
double sizeMb = bytes / (1000 * 1000);
// the return is mb default
return sizeMb.toStringAsFixed(decimals);
// below if you wanted to return suffix just uncomment them
// const suffixes = ["b", "kb", "mb", "gb", "tb"];
// var i = (m.log(bytes) / m.log(1024)).floor();
// return ((bytes / m.pow(1024, i)).toStringAsFixed(decimals)) + suffixes[i];
}