0

Hallows, I have the code below and i need to resize/reduce/compress images selected from gallery without considerable change in quality of image (like Instagram do) and then upload it to firebase database and storage. Please help me!

          UploadButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                        UploadImageFileToFirebaseStorage();
                }
            });
        DisplayImageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, DisplayImagesActivity.class);
                startActivity(intent);
            }
        });
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == Image_Request_Code && resultCode == RESULT_OK && data != null && data.getData() != null) {
            FilePathUri = data.getData();
            try {
                Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), FilePathUri);
                SelectImage.setImageBitmap(bitmap);
                ChooseButton.setText("Image Selected");
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    public String GetFileExtension(Uri uri) {
        ContentResolver contentResolver = getContentResolver();
        MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
          return mimeTypeMap.getExtensionFromMimeType(contentResolver.getType(uri)) ;
    }
    public void UploadImageFileToFirebaseStorage() {
            if (FilePathUri != null) {
            progressDialog.setTitle("Image is Uploading...");
            progressDialog.show();
            final StorageReference storageReference2nd = storageReference.child(Storage_Path + System.currentTimeMillis() + "." + GetFileExtension(FilePathUri));
            // Adding addOnSuccessListener to second StorageReference.
            storageReference2nd.putFile(FilePathUri)
                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onSuccess(final UploadTask.TaskSnapshot taskSnapshot) {
                            final String TempImageName = ImageName.getText().toString().trim();
                            progressDialog.dismiss();
                            Toast.makeText(getApplicationContext(), "Image Uploaded Successfully ", Toast.LENGTH_LONG).show();
                            storageReference2nd.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                                @Override
                                public void onSuccess(Uri uri) {
                                    String url = uri.toString();
                                    String ImageUploadId = databaseReference.push().getKey();
                                    ImageUploadInfo imageUploadInfo = new ImageUploadInfo(TempImageName, url);
                                    databaseReference.child(ImageUploadId).setValue(imageUploadInfo);
                        }
                    })
                   ```

NyP
  • 499
  • 4
  • 18
  • You may check answer in here https://stackoverflow.com/questions/28424942/decrease-image-size-without-losing-its-quality-in-android#answer-57750748 – Zain Dec 30 '19 at 21:26
  • @Zain thanks for the lead. Kindly guide how exactly is that implementable in my code – NyP Dec 31 '19 at 07:40
  • The answers didn't help sirs. Kindly help – NyP Dec 31 '19 at 22:12

0 Answers0