Flutter Web 目前处于测试阶段,因此缺乏有关如何执行此操作的可用信息/资源。
我找不到任何与 web 兼容的 flutter 包来做到这一点。有小费吗?
这是我的代码:
uploadImage() async {
File file;
FileReader fileReader = FileReader();
InputElement uploadInput = FileUploadInputElement();
uploadInput.click();
uploadInput.onChange.listen((event) {
file = uploadInput.files.first;
fileReader.readAsDataUrl(file);
fileReader.onLoadEnd.listen((event) {
if (file.type == "image/jpg" || file.type == "image/jpeg" || file.type == "image/png") {
String base64FileString = fileReader.result.toString().split(',')[1];
//COMPRESS FILE HERE
setState(() {
userImgFile = file;
userImageByteMemory = base64Decode(base64FileString);
});
} else {
CustomAlerts().showErrorAlert(context, "Image Upload Error", "Please Upload a Valid Image");
}
});
});
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试压缩来自相机或图库的图像,但我尝试在这个问题Flutter & Firebase: Compression before upload image中回答
但是 UI 被冻结了,请问你们有什么解决方案吗?为什么图像插件会遇到这个问题?
更新:
compressImage(imageFile).then((File file) {
imageFile = file;
});
Future<File> compressImage(File imageFile) async {
return compute(decodeImage, imageFile);
}
File decodeImage(File imageFile) {
Im.Image image = Im.decodeImage(imageFile.readAsBytesSync());
Im.Image smallerImage = Im.copyResize(
image, 150); // choose the size here, it will maintain aspect ratio
return new File('123.jpg')
..writeAsBytesSync(Im.encodeJpg(smallerImage, quality: 85));
}
Run Code Online (Sandbox Code Playgroud)
我在此代码中遇到“未处理的异常”