Как загрузить изображение, снятое с камеры, в хранилище firebase? - PullRequest
0 голосов
/ 03 октября 2019

Я хочу загрузить изображение, снятое с камеры, в Firebase Storage. Я знаю, как сохранить изображение, как только получу формат изображения Uri, но я получаю растровое изображение от работы с камерой. Так что мне нужно знать, как это сделать?

click_picture.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(intent,2);
            }
        });

 @Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Bitmap bitmap = (Bitmap)data.getExtras().get("data");
        image.setImageBitmap(bitmap);
    }
public String getFileExtendsion(Uri uri){
        ContentResolver contentResolver = getActivity().getContentResolver();
        MimeTypeMap mime = MimeTypeMap.getSingleton();
        return  mime.getExtensionFromMimeType(contentResolver.getType(uri));
    }
public void uploadFile(){
        if(mImageUri!=null){
            final StorageReference fileReference = mStorageRef.child("ProfilePicture"+"."+getFileExtendsion(mImageUri));
            fileReference.putFile(mImageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    fileReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                        @Override
                        public void onSuccess(Uri uri) {
                            ///store the uri
                        }
                    });
                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.i("Fail",e.getMessage());
                }
            });
        }
    }

У меня есть функция uploadFile () для сохранения Uri изображения в хранилище Firebase, а затем получить URL-адрес изображения, чтобы сохранить его в базе данных реального времени Firebase. Но мне нужно преобразовать растровое изображение в Uri? Если да, то как? Код, который я нашел, не работает, и если есть какой-либо другой способ, пожалуйста, скажите мне!
Спасибо за ваше время:)

1 Ответ

0 голосов
/ 03 октября 2019

Если вы получаете растровое изображение с камеры, см. Первый пример в документации Firebase, показывающий, как загружать из данных, которые у вас есть в памяти , что удобно начинается с Bitmap.

Оттуда:

// Get the data from an ImageView as bytes
imageView.setDrawingCacheEnabled(true);
imageView.buildDrawingCache();
Bitmap bitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] data = baos.toByteArray();

UploadTask uploadTask = mountainsRef.putBytes(data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...