2017-09-19 11 views
0

J'utilise la bibliothèque Fresco pour afficher des images dans mon application Android. Je voudrais afficher quelques images (jpg ou png) que j'ai définies avec des subventions publiques. Quand je faisais des tests rapides, je prenais juste n'importe quelle image d'internet pour définir une URL, mais en utilisant les URL réelles que j'ai besoin d'utiliser, j'ai l'URL suivante https://drive.google.com/uc?export=view&id= <>, mais comme c'est une redirection et, une fois redirigé, la nouvelle URL n'est pas l'image elle-même, Fresco est incapable de l'afficher. J'ai essayé Picasso comme une bibliothèque alternative, mais sans aucun succès. J'ai également essayé l'URL de téléchargement pour les deux bibliothèques (https://drive.google.com/uc?export=download&id= <>). Mais pas de résultat.l'affichage d'une image à partir du lecteur dans Android

Quelqu'un sait comment pourrait-il être possible d'obtenir ces images? Ou la seule solution est de le télécharger (en utilisant la seconde url) en traitant l'objet reçu en en stockant un bitmap et en l'affichant?

Pour le télécharger, quoi dois-je utiliser et comment? rénovation?

Merci d'avance.

Répondre

0

J'ai trouvé une solution à ce problème (mais pourrait être applicable que si vous utilisez Google Cloud ou Google Script).

Il consiste à créer un service doGet() avec le code suivant à l'intérieur:

var file = DriveApp.getFileById(fileId) 
return Utilities.base64Encode(file.getBlob().getBytes()); 

et utiliser cette valeur base64 dans votre application. Avec ce format, Fresco peut faire la magie

Ce n'est pas une solution immédiate, et nécessite de faire un peu de travail dans une autre plate-forme qui n'est pas votre application Android, mais cela fonctionne parfaitement. Etes-vous sûr qu'il n'y a aucun problème avec vos URL?

0

Picasso travaille avec les URL directes comme: https://kudago.com/media/images/place/06/66/06662fda6309ce1ee9116d13bd1c66d5.jpg

Ensuite, vous pouvez télécharger votre image comme:

     Picasso.with(this) 
          .load(url) 
          .noFade() 
          .placeholder(R.drawable.placeholder_grey) //if you want to use a stub 
          .into(imageView, new com.squareup.picasso.Callback() { 
           @Override 
           public void onSuccess() { 
            //here you can operate with image after it is downloaded 
           } 

           @Override 
           public void onError() { 

           } 
          }); 

espère que cela vous aidera.

+0

Il n'y a aucun problème avec l'URL, le problème est que lorsque vous téléchargez une image sur Google Drive, elle ne vous fournit pas d'URL directe pour votre image, donc ce n'est pas un accès direct. J'ai posté ci-dessous la solution que j'ai trouvée à ce problème (bien qu'il nécessite quelques actions jeter Google Script ... mais une solution de contournement réalisable) –