2

I am working in a code to pick a image using device camera and store in a variable. I worked with saving the original photo but in the same place i also need to save the photo but with small resolution so that i can use it as thumbnail. I need to upload both the image to firebase storage and retrieve it when needed.

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

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


});
}

My code works for storing image in tempImage variable but dont know how to upload the small image stored in _tempThumb variable

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();

I am able to upload the full sized image but have no idea about how to upload the small sized image.

2

1 Answer 1

2

Add this to your pubspec.yaml:

image: ^2.1.4

Add this import statement:

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

Then first decode your image:

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

Then resize it:

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

Then encode it again:

var thumb = img.encodePng(thumbnail);

This gives an int array that you can save to firebase.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.