Загрузка изображения из хранилища Firebase без загрузки изображения с использованием Glide Kotlin - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь загрузить изображение из Firebase Storage, используя Kotlin и Glide. я добавил все зависимости и применил плагин:

implementation 'com.firebaseui:firebase-ui-storage:6.2.0'
implementation 'com.google.firebase:firebase-storage-ktx:19.1.1'
implementation 'com.github.bumptech.glide:glide:4.8.0'
kapt 'com.github.bumptech.glide:compiler:4.9.0'

apply plugin: 'kotlin-kapt'

Мой код выглядит следующим образом:

val storageRef = Firebase.storage.reference

    val imageref = storageRef.child("test/test.jpg")

    imagetest = findViewById(R.id.imageView5)

    Glide.with(this)
        .load(imageref)
        .into(imagetest)

При запуске кода представление изображения с изображением по умолчанию становится черным, указывая, что Код пытается извлечь что-то из Firebase Storage. но imageView никогда не заполняет загруженное изображение. при условии, что загрузка действительно происходит.

Я что-то не так делаю? Снимок экрана моего хранилища файлов Firebase приведен ниже:

enter image description here

Я проверил это немного больше, и Glide, кажется, загружает изображения из HTTPS нормально, независимо от того, где я вытащил URL с. Но облачное хранилище предоставляет URL как GS: //. так как мне преобразовать GS: // в HTTPS: //?

Пожалуйста, помогите.

Ответы [ 3 ]

0 голосов
/ 17 марта 2020

Разница между ними:

GS URL:

gs://<your_project_id>.appspot.com/test/test.jpg

HTPPS URL:

https://firebasestorage.googleapis.com/v0/b/<your_project_id>.appspot.com/o/test%2Ftest.jpg
0 голосов
/ 26 апреля 2020

Вот процесс, где моя проблема исправлена ​​-

Шаг 1 - go для build.gradle (приложение) и добавления этих зависимостей

implementation 'com.firebaseui:firebase-ui-storage:4.3.2'
implementation 'com.github.bumptech.glide:glide:4.x.x'
annotationProcessor 'com.github.bumptech.glide:compiler:4.x.x'

Шаг 2 - Создание java файл

@GlideModule
public class MyAppGlideModule extends AppGlideModule {

    @Override
    public void registerComponents(Context context, Glide glide, Registry registry) {
        registry.append(StorageReference.class, InputStream.class,
                new FirebaseImageLoader.Factory());
    }
}

Шаг 3 - Установите нужное изображение

FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference storageRef = storage.getReferenceFromUrl("gs://<your-app>/").child("folder"); //add .child(nested_folder) if nested folder occurs
GlideApp.with(context)
                .load(storageRef.child(test_image.jpg))
                .into(holder.thumbnail);
//that .load() will be load like .load(gs://<your_app/folder/test_image.jpg>)

0 голосов
/ 17 марта 2020

Я понял это.

imageref = Firebase.storage.reference.child("test/test.jpg")
    imageref.downloadUrl.addOnSuccessListener {Uri->

        val imageURL = Uri.toString()
        imagetest = findViewById(R.id.imageView5)


        Glide.with(this)
            .load(imageURL)
            .into(imagetest)

    }

оператор 'downloadurl' фактически преобразует GS: // в HTTPS: //

...