【发布时间】:2020-06-29 10:28:17
【问题描述】:
我正在创建一个社交网络应用程序,用户可以在其中发布图像,因此当用户上传其图像时,它的尺寸非常大,而当我检索该图像时,使用 Picasso 会花费太多时间。 有没有办法在上传之前压缩这些图像而不会造成明显的质量损失,以便可以非常有效和快速地检索它们。 P.S:我使用 Firebase 作为后端服务器。
这是我上传图片的代码。
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if(requestCode == Gallery_Pick && resultCode == RESULT_OK && data != null){
ImageUri = data.getData();
SelectPostImage.setImageURI(ImageUri);
}
super.onActivityResult(requestCode, resultCode, data);
}
final StorageReference filePath = PostImagesRef.child("Post Images").child(ImageUri.getLastPathSegment() + postRandomName + ".jpg");
final UploadTask uploadTask = filePath.putFile(ImageUri);
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
String message = e.toString();
Toast.makeText(PostActivity.this, "Some Error Occured"+message, Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Toast.makeText(PostActivity.this, "Image Uploaded Successfully", Toast.LENGTH_SHORT).show();
Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if(!task.isSuccessful()){
throw task.getException();
}
downloadImageUrl = filePath.getDownloadUrl().toString();
return filePath.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if(task.isSuccessful()){
downloadImageUrl = task.getResult().toString();
Toast.makeText(PostActivity.this, "Saved To Database Successfully", Toast.LENGTH_SHORT).show();
SavingPostInformationToDatabase();
}
}
});
}
});
请帮助我。任何帮助或建议都将是可观的。 提前致谢。!! :)
【问题讨论】:
标签: android image firebase compression