У меня есть приложение, в котором пользователь может создать событие и загрузить изображение из своей галереи и загрузить его в FirebaseStorage. Все работает нормально, но изображения действительно большие по размеру, и я бы хотел оптимизировать процесс загрузки/загрузки. Я уже пробовал с этим:Сжатие изображения перед загрузкой в FirebaseStorage
// Get the data from an ImageView as bytes
imageView.setDrawingCacheEnabled(true);
imageView.buildDrawingCache();
Bitmap bitmap = imageView.getDrawingCache();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] data = baos.toByteArray();
UploadTask uploadTask = mountainsRef.putBytes(data);
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// taskSnapshot.getMetadata() contains file metadata such as size, content-type
Uri downloadUrl = taskSnapshot.getDownloadUrl();
}
});
и установка bitmap.compress(Bitmap.CompressFormat.JPEG, 50, baos);
Это работает, но это в основном делает каждый образ некрасиво. Есть ли способ, если возможно, руководство, чтобы уменьшить размер изображения без полного разрушения качества?