Flutter Resize ImagePicker 图片在上传到 firebase 之前

Flutter Resize ImagePicker Image before uploading to firebase

我正在使用 flutter 构建一个演示壁纸应用程序,用户可以在其中将图像上传到 firebase。加载这些图像时,我首先要加载图像的小版本,只有在用户单击图像后,才加载完整版本。 为了实现这一点,我想我会在用户选择图像后在后台简单地上传 2 个版本。现在我正在为如何实现这一点而苦苦挣扎。

以下是用户如何使用 ImagePicker 将图像选取到文件 var.

Future pickImage() async {
var tempImage = await ImagePicker.pickImage(source: ImageSource.gallery, maxHeight: 2000);
print(tempImage.runtimeType);


setState(() {
  inspirationimage = tempImage;
});
String result = await uploadImage();
}

如您所见,临时图像是全尺寸版本。我现在会有这样的东西:

var smallImage = tempImage.resize(height: 200);

显然这不起作用,因为 tempImage 是文件类型。知道这通常是如何解决的吗?

谢谢

由于您使用的是 Firebase,因此您可以使用 Firebase "Resize Image" extension. If you want to do it on client side however, take a look at

你为什么不让你的用户使用这个裁剪图像 image_cropper 1.3.1插件? link : https://pub.dev/packages/image_cropper

示例

// File image = await ImagePicker.pickImage(source: source);
    final _picker = ImagePicker();
    PickedFile image = await _picker.getImage(source: source);
    if (image != null) {
      // Remove crop attribute if we don't want to resize the image
      File cropped = await ImageCropper.cropImage(
        sourcePath: image.path,
        aspectRatio: CropAspectRatio(ratioX: 1, ratioY: 1),
        compressQuality: 100, // 100 means no compression
        maxWidth: 700, 
        maxHeight: 700,
        compressFormat: ImageCompressFormat.jpg,
        androidUiSettings: AndroidUiSettings(
          toolbarColor: primaryColor,
          toolbarTitle: "RPS Cropper",
          statusBarColor: primaryColor,
          backgroundColor: Colors.white,
          //toolbarWidgetColor: primaryColor,
          activeControlsWidgetColor: primaryColor,
          //dimmedLayerColor: primaryColor,
          cropFrameColor: primaryColor,
          cropGridColor: primaryColor,
        ),
      );