Flutter Resize ImagePicker Image 在上传到firebase之前

Posted

技术标签:

【中文标题】Flutter Resize ImagePicker Image 在上传到firebase之前【英文标题】:Flutter Resize ImagePicker Image before uploading to firebase 【发布时间】:2021-02-07 10:52:31 【问题描述】:

我正在使用 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();

如您所见,tempimage 是完整大小的版本。我现在会有这样的东西:

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

显然这不起作用,因为 tempImage 是文件类型。任何想法通常如何解决?

谢谢

【问题讨论】:

【参考方案1】:

由于您使用的是 Firebase,因此您可以使用 Firebase "Resize Image" extension。但是,如果您想在客户端执行此操作,请查看 this answer。

【讨论】:

谢谢,这行得通!对于尝试这种方法的任何人:如果您想生成与原始访问令牌相同的访问令牌,请查看此帖子:***.com/questions/59072882/…【参考方案2】:

你为什么不让你的用户使用这个来裁剪图像 image_cropper 1.3.1 插件? 链接: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,
        ),
      );

【讨论】:

这个我其实也用过

以上是关于Flutter Resize ImagePicker Image 在上传到firebase之前的主要内容,如果未能解决你的问题,请参考以下文章

Dart/Flutter 替代 PHP 调整裁剪图像大小?

flutter开发游戏入门(仿谷歌浏览器小恐龙Chrome dino)二

Flutter:调整/放大使用 ClipRect 剪辑的图像

flutter中关于软键盘弹起导致的问题

屏幕的大小和尺寸

cv2.resize()和transform.resize()的区别