Как изменить файл изображения на миниатюру, сохраняя исходный файл в флаттере

Мне нужно сделать снимок из приложения камеры и загрузить его в хранилище Firebase. В то же время мне также нужно загрузить уменьшенную версию того же файла изображения. Мне нужно получить URL изображения и сохранить его в базе данных. Я новичок в Firebase и работаю над проектом колледжа. Мне нужно миниатюру, чтобы при загрузке изображения сначала мне нужно было загрузить миниатюру, и в соответствии с условием я загрузил полноразмерное изображение

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


setState(() {

  sampleImage=tempImage;
  Im.Image image = decodeImage(sampleImage.readAsBytesSync());
  Im.Image thumbnail = copyResize(image, width: 120,height: 120);
  imageThumb=thumbnail as File;

});
}


bool validateAndSave(){
final form = formKey.currentState;
if(form.validate()){
  form.save();
  return true;
}else{return false;}
}


void uploadStatusImage() async{
  goToHomePage();
  if(validateAndSave()){
    final StorageReference postImageRef= FirebaseStorage.instance.ref().child("Post Images");

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

    final StorageUploadTask uploadTaskThumb=postImageRef.child(timeKey.toString()+"thumb.jpg").putFile(imageThumb);




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

    this.url=ImageUrl.toString();
    this.url1=ImageThumbUrl.toString();
    print("Image Url= "+url);



    saveTodatabase(url,url1);

  }
}

void saveTodatabase(url,url1) async {
var dbTimekey=new DateTime.now();
var formatDate=new DateFormat('MM d, yyyy');
var formatTime=new DateFormat('EEEE, hh:mm aaa');

String date=formatDate.format(dbTimekey);
String time=formatTime.format(dbTimekey);



var data = {
  "image":url,
  "imagethumb":url1,
  "description": _myValue,
  "date": date,
  "time": time,

};

await databaseReference.collection("posts")
    .document(dbTimekey.toString())
    .setData(data);

//ref.child("Posts").push().set(data);
}

1 ответ

Обходной путь здесь — использовать плагин миниатюр , который может помочь мгновенно отобразить изображение в виде миниатюры.

У Firesbase также есть расширение , которое позволяет изменять размер изображений для создания миниатюр. Это дает возможность сохранить или удалить исходное изображение.

Другие вопросы по тегам