相关疑难解决方法(0)

Flutter Web:如何压缩图像/文件?

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)

image-compression flutter flutter-web

6
推荐指数
2
解决办法
947
查看次数

压缩图像时 UI 冻结

我正在尝试压缩来自相机或图库的图像,但我尝试在这个问题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)

我在此代码中遇到“未处理的异常”

flutter flutter-layout

1
推荐指数
1
解决办法
1636
查看次数