在上传到Firebase存储之前,如何减小图像的尺寸/分辨率?

时间:2018-11-22 17:52:04

标签: android firebase firebase-storage

我正在尝试将图像上传到Firebase存储,但是大图像使我的应用程序滞后/缓慢,因此我想按比例缩小图像或有其他替代方法

1 个答案:

答案 0 :(得分:1)

这是您可以用来执行的功能。您需要将图像的bitmap传递给函数:

private void doUpload(Bitmap bitmap) {
    //Change this to your picture name.
    String s = "MyPicture.jpg";
    StorageReference storageReference2 = FirebaseStorage.getInstance().getReference(s);

    ByteArrayOutputStream baos = new ByteArrayOutputStream();  
    //Compress the original bitmap down into a JPEG.
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    byte[] data2 = baos.toByteArray();

    //Get an array of the bytes and upload it to Firebase Storage.
    UploadTask uploadTask = storageReference2.putBytes(data2);
    uploadTask.addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception exception) {
            makeToast("Exception " + exception.getMessage());
        }
    }).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
            makeToast("Picture uploaded.");
        }
    });
}

这应将图片上传到Firebase存储。它将图像压缩为JPEG。您可以通过更改上面的字符串s的值来更改图片的名称。希望这会有所帮助。