Обновление фотографии профиля после изменения размеров изображений с расширением Firebase - PullRequest
0 голосов
/ 28 апреля 2020

во время создания моего пользователя я вставляю ваши фотографии в базу данных Firebase Storage (как показано в методе ниже):

 final StorageReference ref = FirebaseStorage.getInstance().getReference("/images/"+barNomeUser.getText().toString()+"perfilFoto"); 
    ref.putFile(uriSelecionada) // Insere a foto selecionada no Storage
            .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                        @Override
                        public void onSuccess(Uri uri) { 
                            Log.i("Url do firebase", uri.toString());
                            uriSelecionada = uri; 
                            String uuid = FirebaseAuth.getInstance().getUid(); 
                            final String nameUser = barNomeUser.getText().toString(); //
                            String profileFotoUrl = uriSelecionada.toString(); 
                            final UserApp userApp = new UserApp(uuid, nameUser, profileFotoUrl, 0, 0, 0, 0);
                            UserProfileChangeRequest profileChangeRequest = new UserProfileChangeRequest.Builder()
                                    .setDisplayName(nameUser).setPhotoUri(uri).build();
                            firebaseUser.updateProfile(profileChangeRequest).addOnCompleteListener(new OnCompleteListener<Void>() {
                                @Override
                                public void onComplete(@NonNull Task<Void> task) {
                                    if(task.isSuccessful()){
                                        Log.i("Register full", firebaseUser.getDisplayName());
                                    }
                                } ...

Однако я заметил, что он потребляет много памяти базы данных, и Я понял, что функция хранения-изменения размера cloudFunctions решит мою проблему ... и она даже решила ее, но она породила еще одну большую проблему: исходное изображение удаляется после изменения размера, это делает предыдущий токен доступа (полученный getDownloadUrl метод) больше не действителен, так как это изображение было удалено из хранилища и теперь существует новое изображение и новый токен, оставляя пользователя без «фотографии» в профиле, как я могу получить изображение с измененным размером для обновления фотография профиля моего пользователя, если процесс изменения размера может занять до 60 секунд и, кроме того, есть время для запроса базы данных?

Новое изображение выглядит так, как будто оно получает одинаковый токен, с той лишь разницей, что добавив в конце "_480x320": imageExample

1 Ответ

1 голос
/ 28 апреля 2020

У вас есть возможность при настройке расширения Firebase «Изменить размер изображения» выбрать, хотите ли вы удалить или нет исходный файл.

Вам следует выбрать «Нет», как показано ниже.

enter image description here


Если вы хотите иметь больший контроль над процессом (например, удалить исходное изображение и присвоить его имя новому (с измененным размером)) , вам придется реализовать процесс изменения размера изображения самостоятельно. Для этого вы можете изменить этот официальный пример функции облака: https://github.com/firebase/functions-samples/tree/master/generate-thumbnail

...