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

JDBC Java Discussion :

[image et BLOB]


Sujet :

JDBC Java

  1. #1
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut [image et BLOB]
    Bonjour,

    j'essaie actuellement de sauvegarder des images dans une DB oracle.
    Une des etapes est la transformation de mon image en BLOB. J'ai trouvé un bout de réponse sur la discussion suivante :
    http://www.developpez.net/forums/showthread.php?t=40018

    Le probleme est que la méthode getBlobByImage() ne fonctionne pas (j'obtiens un ByteArrayInputStream de taille 0).

    Je ne suis pas un specialiste des flux et autres array de byte , mais c'est visiblement le passage d'un BufferedImage (qui a l'air de bien contenir mon image) en un ByteArrayOutputStream qui peche.

    Si quelqu'un a une idée ... elle est la bien venue (voir une autre solution pour transformer une imageIcon en Blob)

    merci de votre aide

  2. #2
    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
    Moi je dirais direction la FAQ JDBC: http://java.developpez.com/faq/jdbc/?page=types#blob ou encore mieux dans les cours: http://ricky81.developpez.com/tutoriel/java/jdbc/blob/

    Et dans ton cas mieux vaut simplement sauvegarder l'image plutôt que l'ImageIcon qui contient des informations superflues
    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.

  3. #3
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut
    Citation Envoyé par sinok
    Et dans ton cas mieux vaut simplement sauvegarder l'image plutôt que l'ImageIcon qui contient des informations superflues
    c'est déjà ce que j'utilise en fait je manipule des ImageIcon mais j'appelle monIcon.getImage() pour creer le Blob

    Citation Envoyé par sinok
    en fait j'ai déjà parcouru cette FAQ mais les exemples on pour point de depart et d'arrivée des fichiers sur le DD. Or mon probleme ce trouve dans la gestion des flux de données et mes images que je pousse en DB ne proviennent pas forcement du Disque dur et quand je les charges je ne passe pas par un fichier non plus .

  4. #4
    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
    Obtenir un Flux sur une ressource en mémoire n'est pas très dur non plus
    Par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ByteArrayInputStream bInputStream = new ByteArrayInputStream (monImageIcon.getImage.getImage.getBytes);
    Et tu utilises ce stream à la place du FileInputStream utilisé dans le tuto
    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.

  5. #5
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut
    salut sinok,

    Citation Envoyé par sinok
    Obtenir un Flux sur une ressource en mémoire n'est pas très dur non plus
    Par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ByteArrayInputStream bInputStream = new ByteArrayInputStream (monImageIcon.getImage.getImage.getBytes);
    Ceci ne fonctionne pas il n'y a pas de methode getBytes() sur un objet Image ...
    C'est pour ca que je passe par toutes les manipes suivantes pour obtenir un flux a partir de mon image , mais l'etape de 'remplissage' du ByteArrayOutputStream ne semble pas fonctionner :

    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
    25
    26
    27
     
        public static ByteArrayInputStream getBlobByImage(Image image) {        
            if (image!=null) {           
                BufferedImage buff = ImageUtils.toBufferedImage(image);               
                byte[] imageBytes;
                if(buff != null) {
                     BufferedImage bImage = (BufferedImage)buff;
                     ByteArrayOutputStream baos = new ByteArrayOutputStream();
                     try {
                         ImageIO.write(bImage, "gif", baos);
                         //PROBLEME ICI PUSIQUE L'OUTPUTSTREAM EST DE TAILLE 0
                     } catch (IOException e) {
                         throw new IllegalStateException(e.toString());
                     }
                     imageBytes = baos.toByteArray();    
                } else {
                 imageBytes = new byte[0];
                 cat.debug("PCD error : the buffered image is null");
                 }
                ByteArrayInputStream inStream = new ByteArrayInputStream(imageBytes);
                return inStream;
            }  else {
                cat.debug("PCD error : the image is null");
                byte[] imageNullBytes = new byte[0];
                return new ByteArrayInputStream(imageNullBytes);
            }      
    }
    ou alors je suis pourrave

Discussions similaires

  1. problem d'affichage d'image de blob
    Par djalilldjo dans le forum Oracle
    Réponses: 0
    Dernier message: 02/01/2010, 16h54
  2. [MySQL] Erreur MySQL - image et blob
    Par ToxiK dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/12/2009, 13h16
  3. Réponses: 1
    Dernier message: 02/03/2008, 16h16
  4. Besoin de votre avis sur stocker image dans Blob
    Par Lideln dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 04/07/2006, 13h49
  5. [java - SQL] transformer une Image en BLOB ?
    Par pierre.zelb dans le forum JDBC
    Réponses: 3
    Dernier message: 04/07/2005, 15h04

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