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

时间:2019-08-20 13:56:30

标签: flutter dart google-cloud-firestore flutter-image

我正在编写代码,以使用设备相机拾取图像并将其存储在变量中。我曾保存原始照片,但在同一位置,我还需要保存照片但分辨率较低,以便可以将其用作缩略图。 我需要将图像都上传到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();

我能够上载完整尺寸的图像,但是不知道如何上载较小尺寸的图像。

1 个答案:

答案 0 :(得分:0)

将此添加到您的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);

这提供了一个可以保存到firebase的int数组。