gpt4 book ai didi

java - Android Java,如何将图像从相机传递到 Firebase 存储

转载 作者:搜寻专家 更新时间:2023-11-01 09:27:03 24 4
gpt4 key购买 nike

我有一个简单的 ImageView,当我点击它时,相机会出现并请求照片,你拍摄照片,然后 ImageView 变成照片,像这样:

 Uri pictureUri;
ImageViewer pic = findViewById(...);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_PIC_REQUEST) {
try {
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
String path=String.valueOf(data.getData());
pictureUri = Uri.fromFile(new File(path));
pic.setImageBitmap(thumbnail);

在相机请求后,图片被加载到 Imageviewer 中,然后我尝试使用以下方法将它上传到 Firebase:

StorageMetadata metadata = new StorageMetadata.Builder()
.setContentType(animal.getPictureID()+"/jpeg")
.build();
mStorageRef.child(animal.getPictureID()).putFile(pictureUri,metadata);

其中 animal.getPictureID 它只是之前给出的 ID。现在这里的问题是,在 putFile() 中它不断返回 FileNotFoundException。

此外,如果您知道为什么 Imageviewer 中的图像质量如此低,那么我们也可以 ncie,但主要问题实际上是 Firebase 存储。

最佳答案

您可以通过以下方式从请求中获取Bitmap:

InputStream stream = getContentResolver().openInputStream(data.getData());
Bitmap bitmap = BitmapFactory.decodeStream(stream);

将其存储到 Firebase 存储:

String path = "images/"+imgName;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// this will compress an image that the uplaod and download would be faster
bitmap.compress(Bitmap.CompressFormat.JPEG, 50, baos);
byte[] data = baos.toByteArray();
FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference storageReference = storage.getReference();
StorageReference reference = storageReference.child(path);
UploadTask uploadTask = reference.putBytes(data);
uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Log.i(TAG, "Image was saved");
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e(TAG, "Image wasn't saved. Exception: "+e.getMessage());
}
});

关于java - Android Java,如何将图像从相机传递到 Firebase 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49795259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com