【发布时间】:2023-03-19 01:02:01
【问题描述】:
我有一个应用程序,用户可以在其中创建事件并从他们的画廊上传图片并将其上传到 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);
这行得通,但这基本上使每个图像都很难看。
如果可能的话,有没有办法在不完全破坏质量的情况下减小图像的大小?
【问题讨论】:
标签: java firebase firebase-storage