如何以两种不同的大小从图像选择器中保存图像

Posted

技术标签:

【中文标题】如何以两种不同的大小从图像选择器中保存图像【英文标题】:How to save a image from image picker in flutter in two different size 【发布时间】:2019-12-25 18:28:19 【问题描述】:

我正在编写代码以使用设备相机选择图像并存储在变量中。我保存了原始照片,但在同一个地方我还需要保存照片,但分辨率很小,这样我就可以将它用作缩略图。 我需要将图像上传到 Firebase 存储并在需要时检索它。

Future getImage() async
var tempImage = await ImagePicker.pickImage(source: ImageSource.camera,imageQuality: 30);

setState(() 
  sampleImage=tempImage;
  _tempThumb=Image.file(sampleImage,height: 20,width: 20,);


);

我的代码用于将图像存储在 tempImage 变量中,但不知道如何上传存储在 _tempThumb 变量中的小图像

final StorageReference postImageRef= FirebaseStorage.instance.ref().child("Post Images");

    var timeKey=new DateTime.now();
    final StorageUploadTask uploadTask=postImageRef.child(timeKey.toString()+".jpg").putFile(sampleImage);


    var ImageUrl = await(await uploadTask.onComplete).ref.getDownloadURL();

我可以上传全尺寸图片,但不知道如何上传小尺寸图片。

【问题讨论】:

它可能会帮助***.com/questions/49701654/… 和这个***.com/questions/57542155/… 您好,我已经看到了这些问题和解决方案,但遗憾的是没有帮助我解决这个问题。 【参考方案1】:

将此添加到您的pubspec.yaml

image: ^2.1.4

添加此导入语句:

import 'package:image/image.dart' as img;

然后首先解码你的图像:

img.Image image = img.decodeImage(tempImage.readAsBytesSync());

然后调整它的大小:

img.Image thumbnail = img.copyResize(image, width: 20, height: 20);

然后再次编码:

var thumb = img.encodePng(thumbnail);

这提供了一个 int 数组,您可以将其保存到 firebase。

【讨论】:

以上是关于如何以两种不同的大小从图像选择器中保存图像的主要内容,如果未能解决你的问题,请参考以下文章

从图像选择器中选择的图像/视频大小(以字节为单位)

如何在使用照片框架从照片中选择图像时在选择器中隐藏 iCloud 图像

如何从图像选择器中获取 NSData?

获取图像地理位置(从图像选择器中选择)

为啥以两种不同方式应用随机森林分类器的特征选择结果不同

如何在Swift中调整图像大小?