我正在尝试将图像加载到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的新手,我想弄清楚是否正在发送字符串,这是导致错误的原因,还是我在这里做错了什么?
答案 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
}