无法解析压缩图像文件的符号-Android Firebase图像上传

时间:2018-09-15 10:44:23

标签: android firebase

我正在尝试将图像加载到Firebase内存中并将其转换为最大位图高度和宽度1200。但是,当我尝试将转换后的图像的位图图像发送到上传操作时,它会显示Unable to resolve the 'selectedImage'符号。

这是我的活动:

private void openFileChooserOne() {
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(intent, PICK_IMAGE_REQUEST);
}

public Bitmap getResizedBitmap(Bitmap image, int maxSize) {
    int width = image.getWidth();
    int height = image.getHeight();

    float bitmapRatio = (float) width / (float) height;
    if (bitmapRatio > 1) {
        width = 1200;
        height = (int)(width / bitmapRatio);
    } else {
        height = 1200;
        width = (int)(height * bitmapRatio);
    }
    return Bitmap.createScaledBitmap(image, width, height, true);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK &&
        data != null && data.getData() != null) {
        try {
            Uri imageUri = data.getData();
            InputStream imageStream = getContentResolver().openInputStream(imageUri);
            Bitmap selectedImage = BitmapFactory.decodeStream(imageStream);
            selectedImage = getResizedBitmap(selectedImage, 1200);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

private void uploadFile() {
    FirebaseUser user = mAuth.getCurrentUser();
    String userID = user.getUid();
    if (mImageUri != null && mImageMedicalUri != null) {
        StorageReference fileReference = mStorageRef.child(userID).child("photo.jpg");
        mUploadTask = fileReference.putFile(selectedImage)
            .addOnSuccessListener(new OnSuccessListener < UploadTask.TaskSnapshot > () {
                //...
            })
    }
}

我是Java的新手,我想弄清楚是否正在发送字符串,这是导致错误的原因,还是我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

如果要在selectedImage方法主体中使用uploadFile()变量,则需要使selectedImage成为Activity类的 field , :

    private Bitmap selectedImage; 

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK &&
            data != null && data.getData() != null) {
            try {
                Uri imageUri = data.getData();
                InputStream imageStream = getContentResolver().openInputStream(imageUri);
                selectedImage = getResizedBitmap(BitmapFactory.decodeStream(imageStream), 1200);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }
    }

    private void uploadFile() {
        //selectedImage now resolved
    }