Как сделать изображение Uri меньше? - PullRequest
0 голосов
/ 21 января 2019

Я новичок в Java, и я изо всех сил пытаюсь понять, как я могу изменить размер изображения, прежде чем загружать его в Firebase.

Я прочитал и перепробовал много предложений из стека, но у меня ничего не получилось.

Мне нужно, чтобы изображение составляло всего несколько сотен килобайт.Изображение будет использоваться только для изображения профиля рядом с именем (40dp * 40dp).Так что качество не должно быть таким хорошим.Так что я не ищу какой-нибудь необычной компрессии, просто простой способ уменьшить изображение.Например, чтобы уменьшить ширину и высоту, скажем, 80dp * (соотношение сторон).

Я получаю изображение с телефона пользователя следующим образом:

private void openFileChooser() {

    Intent intent = new Intent();

    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(intent, PICK_IMAGE_REQUEST);

}

@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) {

         imageURI = data.getData();

        Picasso.with(this).load(imageURI).fit().centerCrop().into(imgView);

    }
}

И загружаю его вбаза данных:

 private void uploadFile() {

    if (imageURI != null && getUserId != null) {

        final StorageReference ref = mStorage.child(getUserId);


        UploadTask uploadTask = ref.putFile(imageURI);
 }

Я попробовал расширение, подобное этому, но оно не помогло

 private void uploadFile() {

    if (imageURI != null && getUserId != null) {

        final StorageReference ref = mStorage.child(getUserId);

        Uri test = new Compressor() {
            public Uri compressToFile(Uri imageURI) {
                return imageURI;
            }

            @Override
            public String getMessageEncoding() {
                return null;
            }

            @Override
            public OutputStream compress(OutputStream os) throws IOException {
                return null;
            }
        }.compressToFile(imageURI);


        UploadTask uploadTask = ref.putFile(test);
} 

Все ответы, которые я нашел, не имели изображения как Uri, поэтому яЯ немного запутался.Мне, вероятно, понадобится изображение в качестве Uri для FireBase.Может кто-нибудь показать мне пошаговое руководство о том, как это сделать.Цени всю помощь!

1 Ответ

0 голосов
/ 21 января 2019

Для этого вы можете использовать библиотеку Imagecompressor https://github.com/zetbaitsu/Compressor

...