Firebase文件上传质量问题

时间:2019-05-10 10:24:38

标签: android firebase firebase-storage

这是代码

StorageReference riversRef = FirebaseStorage
                .getInstance().getReference().child(uri.toString());
        riversRef.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

            }
        })

//从意图中获取uri

 @Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == Activity.RESULT_OK) {
        if (requestCode == IMAGE_1_CAMERA) {
            Bitmap photo = (Bitmap) data.getExtras().get("data");
            Uri cameraImage = getImageUri(this, photo);
            String realPath = getRealPathFromURI(cameraImage);
            uri= cameraImage;


        }
    }
 public Uri getImageUri(Context inContext, Bitmap inImage) {
   String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
    return Uri.parse(path);
}

我正在通过android在firebase上上传图像,但是在firebase上上传图像后图像的质量降低了,我没有使用任何图像压缩

1 个答案:

答案 0 :(得分:0)

对于原始质量的图像,请使用此代码,因为data.getExtras().get("data")会降低图像质量

 Uri file = Uri.fromFile(new File("path/to/images/rivers.jpg"));
StorageReference riversRef = storageRef.child("images/"+file.getLastPathSegment());
uploadTask = riversRef.putFile(file);

// Register observers to listen for when the download is done or if it fails
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, etc.
        // ...
    }
});

onActivityResult

 @Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == Activity.RESULT_OK) {
        if (requestCode == IMAGE_1_CAMERA) {
            Uri selectedImageUri = data.getData();

            // OI FILE Manager
            filemanagerstring = selectedImageUri.getPath();
          // MEDIA GALLERY
            selectedImagePath = getPath(selectedImageUri);

        }
    }

//更新!

 public String getPath(Uri uri) {
        String[] projection = { MediaStore.Video.Media.DATA };
        Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
        if (cursor != null) {
            // HERE YOU WILL GET A NULLPOINTER IF CURSOR IS NULL
            // THIS CAN BE, IF YOU USED OI FILE MANAGER FOR PICKING THE MEDIA
            int column_index = cursor
                    .getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
            cursor.moveToFirst();
            return cursor.getString(column_index);
        } else
            return null;
    }