【问题标题】:Flutter Image Compress giving result as null颤振图像压缩结果为空
【发布时间】:2021-10-19 16:13:55
【问题描述】:

Compressed 显示为 null

File compressed = await FlutterImageCompress.compressAndGetFile(
        img.path,
        img.path.split('/').last,
        quality: 80,
      );

      ref = firebase_storage.FirebaseStorage.instance
          .ref()
          .child('postimages/${Path.basename(img.path)}');
      await ref.putFile(compressed);

这就是我得到的错误

E/flutter (12851): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] 未处理异常:
NoSuchMethodError:在 null 上调用了 getter 'absolute'。
E/flutter (12851):接收器:null
E/flutter (12851):尝试调用:absolute
E/flutter (12851): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5)
E/flutter (12851): #1 Reference.putFile
包:firebase_storage/src/reference.dart:126
E/颤振 (12851): #2 _AddImageState.uploadFile
包:softclaw/…/addpost/addimage.dart:228
E/颤振 (12851):
E/颤动​​(12851):

【问题讨论】:

  • 您必须传递完整路径而不是 img.path.split('/').last - 将写入压缩文件的完整路径
  • 那是目标路径,如果我传递完整路径,它会说图像路径不能与图像路径相同,如果我传递另一个路径,那么它会询问图像名称;所以我传递了文件名而不是路径。
  • FlutterImageCompress.compressAndGetFile("/data/user/0/com.softclaw.in/cache/image_picker8531589453832627480.jpg", "/data/user/0/com.softclaw.in/cache/image_picker8531589453832627480.webp", quality: 80, format: CompressFormat.webp); - 有什么相同之处?输入为jpg 输出为webp
  • final path = '/data/user/0/com.softclaw.in/cache/image_picker8531589453832627480.jpg'); final imageUri = Uri.parse(path); final outputUri = imageUri.resolve('output.webp'); print(imageUri.toFilePath()); print(outputUri.toFilePath());
  • @pskink ????您是否有机会在答案中写下最终结果,以便我们投票并且 OP 可以接受?

标签: firebase flutter firebase-storage


【解决方案1】:

这会很好用

final imageUri = Uri.parse(img.path);
      final String outputUri = imageUri.resolve('./output.webp').toString();
      print(imageUri.toFilePath());

      File compressed = await FlutterImageCompress.compressAndGetFile(
          img.path, outputUri,
          quality: 80, format: CompressFormat.webp);
      print(img.path);
      print(outputUri);

      ref = firebase_storage.FirebaseStorage.instance
          .ref()
          .child('postimages/${Path.basename(img.path)}');
      await ref.putFile(compressed);
      _imageName.add(await ref.getDownloadURL());
    }

【讨论】:

    猜你喜欢
    • 2021-05-26
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 2019-04-16
    • 2011-05-24
    • 2021-11-21
    • 2018-11-23
    • 1970-01-01
    相关资源
    最近更新 更多