IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Stocker et récupérer des images dans une BDD externe


Sujet :

Android

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 78
    Points : 50
    Points
    50
    Par défaut Stocker et récupérer des images dans une BDD externe
    Bonsoir,

    Je cherche a développer une application affichant des images depuis une base de données externe. Lorsque l'application s'ouvre , la derniere image ajoutée dans la BDD saffiche , puis des boutons "Precedent" et "Suivant" permettront de changer d'image ( pour ceux qui connaissent , le systeme serait le meme que l'application "9gag"). Le premier problème qui se pose est de savoir sous quelle forme je doit stocker ces images. En sachant que les images en questions se situeront au départ sur mon ordinateur. Jai cru comprendre que les stocker sous le format BLOB n'etait pas une bonne solution. Et en sachant que j'aurai beaucoup d'images à ajouter chaque semaines , je n'aurai pas le temps par exemple d'heberger ces images sur un site quelconque puis de stocker le lien dans ma base de données.

    Ne connaissant pas bien les solutions offertes par une base de donnée , j'aimerai savoir un peu les méthodes pouvant répondre à mon besoin.

    Merci d'avance.

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Si tu veux pouvoir faire du offline alors la solution serait d'utiliser la sdcard pour stocker tes images ^^.

    Après tu peux toujours avoir les deux liens en BD, le chemin local et le chemin du site.

    Si le chemin du local existe tu charges l'image de la sdcard, sinon tu la télécharges et la stocke sur la sdcard, en mettant à jour la bd.

    Après on ne sauvegardes pas les images en bd, une image est lourd en taille de donnée !!!
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 78
    Points : 50
    Points
    50
    Par défaut
    Le offline n'est pas mon objectif , mon application ne sera disponible qu'en étant connecté à internet. La question que je me pose est justement de savoir comment stocker les images dans la bdd web sans les insérer directement , et sans non plus devoir les héberger à chaque fois sur un hébergeur type imageshack , recuperer le lien , l’insérer dans la bdd etc ... vu que j'ai prévu d'avoir beaucoup d'images à ajouter ça serait beaucoup trop long.

  4. #4
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Donc ta question ne se situe pas vraiment au niveau d'Android.

    Pourquoi ne pas contenir tes images en base64 ? Ou dans un format BLOB ?
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 78
    Points : 50
    Points
    50
    Par défaut
    Oui c'est vrai , en y repensant mon sujet n'est peut-être pas dans la bonne section du forum désolé.

    Pour les formats que tu propose ils permettent de stocker les images directement dans la BDD non ? Ca ne risque pas de créer des lenteurs dans le chargement de mes images depuis mon application ?

  6. #6
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Je vais laisser des spécialistes de base de données parler. Personnellement, je n'ai jamais eu de souci en local ou web avec ces solutions, avec un échantillon de 5 à 150 images.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 78
    Points : 50
    Points
    50
    Par défaut
    Merci pour ta réponse Hizin.

    J'ai décidé de tenter le coup avec des données de type BLOB. Pourrais-tu m'indiquer la méthode pour récupérer une image sous format BLOB dans ma BDD , pour la mettre dans un ImageView dans mon application ? Ou à défaut , un tutoriel pouvant m'apprendre à le faire.

  8. #8
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    En faisant ta requête, le résultat sera un tableau de byte, il te suffira juste d'utiliser la méthode idoine de BitmapFactory pour créer ton image.

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    byte[] bitmapData = cursor.getBlob(/*ce qu'il faut ici*/);
    BitmapFactory.decodeByteArray(bitmapData, 0, bitmapData.length);

    Doc : https://developer.android.com/refere...teArray%28byte[],%20int,%20int,%20android.graphics.BitmapFactory.Options%29
    (les deux méthodes, avec et sans options)
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  9. #9
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Honnêtement, pas franchement la meilleure des idée en terme de coût IO/Processeur & cie.

    Ton système se cassera la gueule sous la charge.

    Il est plutôt recommandé de stocker les images sur du filesystem, et les paths en base de donnée.
    Les images devront être directement servies en statique par le serveur web au lieu de passer la couche software.
    La couche software ne servant qu'à récupérer les adresses des images.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 78
    Points : 50
    Points
    50
    Par défaut
    Bon du coup j'ai opté pour la deuxième solution. J'ai placé mes images dans un dossier sur mon hébergeur , et j'ai créé ma BDD qui contient les liens de ces images.

    Maintenant j'essaye de me familiariser avec la connexion entre PHP et Android , et j'ai vraiment du mal. Par exemple pour m'entraîner j'ai créé ce script php qui compte le nombre de ligne dans ma BDD :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    function getNombreImages(){
    	mysql_connect("host","user","pswd");
    	mysql_select_db("appsplea_f");
    	$q = mysql_query("SELECT * FROM images");
    	$c = mysql_num_rows($q);
    	mysql_close();
    	return $c;
    }
    ?>
    Je l'ai placé sur mon site , et j'aimerai maintenant recuper la valeur de $c pour la placer dans un TextView présent dans mon activité.

    Comment faire ?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 78
    Points : 50
    Points
    50
    Par défaut
    J'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bandeau.setText("Nombre de photos :"+getReponse("je met ici l'url du script php"));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    private String getReponse(String location){
        	StringBuffer result = new StringBuffer();
        	String r;
        	URL url = null;
        	try {
                url = new URL(location);
                //   Log.d(Constants.LOGTAG, " " + SimpleGet.CLASSTAG + " url = " + url);
            } catch (MalformedURLException e) {
            	//  Log.e(Constants.LOGTAG, " " + SimpleGet.CLASSTAG + " " + e.getMessage());
            }
        	try {
                HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
                InputStream iS = urlConn.getInputStream();
                BufferedReader in = new BufferedReader(new InputStreamReader(iS));
                r = in.readLine();
                result.append(r);
                in.close();
                urlConn.disconnect();
     
            } catch (IOException e) {
               // Log.e(Constants.LOGTAG, " " + SimpleGet.CLASSTAG + " " + e.getMessage());
            }
        	return result.toString();
        }
    J'ai modifié également le script php en supprimant la fonction et en placant un "echo $c" à la place du return.
    Et ça plante dés que j'arrive sur l'activité. Un peu d'aide ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Stocker les chemins des images dans la BDD
    Par brestoise dans le forum Requêtes
    Réponses: 1
    Dernier message: 11/06/2013, 14h47
  2. [EasyPHP] Récupérer des données sur une BDD externe ?
    Par hisin dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 31/12/2009, 12h39
  3. Insérer des images dans une BDD Access
    Par polothentik dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 06/05/2008, 09h00
  4. Réponses: 1
    Dernier message: 27/09/2006, 08h50
  5. Comment stocker des images dans une base de données ?
    Par [Silk] dans le forum Bases de données
    Réponses: 4
    Dernier message: 21/07/2005, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo