Ich habe eine App, mit der der Benutzer ein Ereignis erstellen und ein Bild aus seiner Galerie hochladen und in FirebaseStorage hochladen kann. Alles funktioniert gut, aber die Bilder sind wirklich groß und ich möchte den Lade-/Download-Prozess optimieren. Ich habe bereits mit dieser versucht:Bildkomprimierung vor dem Hochladen auf 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();
}
});
und Einstellung bitmap.compress(Bitmap.CompressFormat.JPEG, 50, baos);
Das funktioniert aber das macht im Grunde jedes Bild hässlich. Gibt es einen Weg, wenn möglich, mit einer Anleitung, die Größe des Bildes zu reduzieren, ohne die Qualität vollständig zu zerstören?