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

Qt Discussion :

Problème avec les images.


Sujet :

Qt

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Points : 20
    Points
    20
    Par défaut Problème avec les images.
    Salut à vous tous, j'ai un petit problème en ce qui concerne les images particulièrement les jpg et les gif. Lorsque j'execute l'application dans un autre poste qui ne contient pas Qt, les images dont les extension jpg ou gif ne s'affiche (pourquoi? )pas a part les PNG, mais dans l'autre poste qui possède Qt bien sur ça marche sans probleme. j'utilise QPixmap pour afficher les images.

    merci de m'aider.

  2. #2
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Tu charges tes images a partir de quoi ? D'un fichier local ou les images sont dans l'exe directement ?
    Tu compiles avec quoi ? Comment as tu déployés ton application Qt ?
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Salut.
    Il faut aussi distribuer les plugins images situé "path Qt"/plugin/images
    En gros, tu copie ce répertoire images à côté de ton exe

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    merci superjaja et yan pour vos réponse, pour répondre a superjaja, je charge les images a partir d'un dossier ou je l'ai nommé "images" et je compile avec mingw.

    pour yan, je crois que j'ai pas trouvé le dossier images mais plutôt imageformats, est ce que c'est le dossier concerné?

  5. #5
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par white_fire Voir le message
    mais plutôt imageformats, est ce que c'est le dossier concerné?
    euh oui c'est celui là

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    Oui effectivement ça marche, merci bien Yan. Encore une petite question et désolé si c'est hors sujet:
    Comment transformer des données sur une QImage en QByteArray ? est ce que je dois passer par une QVariant ou est ce qu'il y a une autre manière.

  7. #7
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par white_fire Voir le message
    Comment transformer des données sur une QImage en QByteArray ?
    C'est à dire?

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    c'est à dire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    QVariant data = image; //données de QImage
    QByteArray byte = data.toByteArray();
    est-ce que c'est correcte?

  9. #9
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    non.
    Que veut tu dire par convertir une QImage en QByteArray?

  10. #10
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    A vrai dire, j'utilise openCV pour capturer des images depuis la webcam et je l'affecte dans une QImage après une conversion , ensuite je veux que ces données qui existe dans une QImage les enregistrer dans la base de données en utilisant un champ BLOB. parce que lors de la consultation de ces données il faut que j'utilise toByteArray pour les stocker aussi sur une QImage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    QImage data;
    QByteArray dt;
    dt = query.value(query.record().indexOf("data")).toByteArray();
    data = QImage::fromData(dt);
    alors le problème c'est comment prendre ces données d'une QImage et les enregistrer d'une manière correcte dans la BD en voulant les extraire après par toByteArray().

    j'espère d'être clair.

  11. #11
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Il faut mieux que tu sauvegarde l'image compressé.
    Regarde ceci
    http://qt.developpez.com/doc/4.5/qimage/#save-2

  12. #12
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    oui j'ai utilisé cet exemple auparavant mais il faut que j'indique l'extension de l'image que je ne sais pas, puisque l'image a été prise depuis la webcam et enregistrer directement dans QImage.

  13. #13
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Citation Envoyé par white_fire Voir le message
    oui j'ai utilisé cet exemple auparavant mais il faut que j'indique l'extension de l'image que je ne sais pas, puisque l'image a été prise depuis la webcam et enregistrer directement dans QImage.
    Je ne pense pas que cela pose problème. Enregistre avec l'extension qui te convient le mieux.
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  14. #14
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par white_fire Voir le message
    oui j'ai utilisé cet exemple auparavant mais il faut que j'indique l'extension de l'image que je ne sais pas, puisque l'image a été prise depuis la webcam et enregistrer directement dans QImage.
    cette fonction de permet de sauvegarder une image au format données.

  15. #15
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    ça marche pas, l'image que je dois récupérer ne s'affiche pas:

    code d'enregistrement:
    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
     
            QByteArray ba;
            QBuffer buffer(&ba);
            buffer.open(QIODevice::WriteOnly);
            qImage.save(&buffer, "jpg"); // writes i
     
            QSqlDatabase bdmysql = QSqlDatabase::addDatabase("QMYSQL");
            bdmysql.setHostName("192.168.0.1");
            bdmysql.setDatabaseName("chat_base");
            bdmysql.setUserName("root");
            bdmysql.setPassword("root");
     
            if (!bdmysql.open())
            {
                 QSqlError err = bdmysql.lastError();
                 QString txt = err.text() ;
                 QMessageBox::information(this,"connection","Voila l'erreur: " + txt);
            }
            else
            {
                 QSqlQuery req2("update avatar set webcam = ? where num = 1");
                 req2.bindValue(0,ba);
                // req2.bindValue(1,);
                 req2.exec();
            }
    code de recuperation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
               QSqlQuery query("select webcam from avatar where num = 1");
               // query.bindValue(0,ip_client);
                query.exec();
     
                query.first();
                dt=query.value(query.record().indexOf("webcam")).toByteArray();
                data = QImage::fromData(dt);
     
               // QImage img=QImage::fromData(data);
                  QPixmap m_pixmap = QPixmap::fromImage(data);
                  remote->setPixmap(m_pixmap);

  16. #16
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par white_fire Voir le message
    ça marche pas, l'image que je dois récupérer ne s'affiche pas:
    c'est à dire?
    tu n'arrive pas :
    à le mettre dans la base de données?
    à la recuperer de la base de données?
    autres?
    As tu utiliser le debugeur pour voir ou il y as un problème?

  17. #17
    Membre actif Avatar de gassi64
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 255
    Points : 230
    Points
    230
    Par défaut
    as tu essayé de passer par le unsigned char* fourni par la méthode bits de QImage ?

  18. #18
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    ceci marche très bien chez moi

    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
    28
    29
    30
    #include <QtGui>
     
    int main(int argc, char *argv[])
    {
        QApplication app(argc,argv);
        QString file = QFileDialog::getOpenFileName();
     
        QByteArray ba;
        {
            QBuffer buffer(&ba);
            buffer.open(QIODevice::WriteOnly);
            //ouverture du fichier
            QImage image(file);
            //sauvegarde de l'image en png dans le buffer => QByteArray
            image.save(&buffer, "PNG");
        }
     
        QLabel w;
        w.setPixmap
            (
                QPixmap::fromImage
                (
                    //récuperation de l'image du QByteArray
                    QImage::fromData(ba)
                )
             );
     
        w.show();
        return app.exec();
    }

  19. #19
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    Pour être franc je sais pas d'où vient le problème est-ce que c'est dans l'enregistrement ou la récupération, mais il se peut que les données sont trop gros pour qu'il soit stocker dans la BD, il faut que je trouve comment minimiser l'image au niveau de sa taille avant de l'enregistrer.

  20. #20
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    Merci beaucoup pour votre aide, j'ai trouvé la solution en transformant le QByteArray en Hexadécimale, voila le code que j'ai utilisé:

    Pour stocker:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            QByteArray ba;
            QBuffer buffer(&ba);
            buffer.open(QIODevice::WriteOnly);
            qImage.save(&buffer, "JPG"); //une QImage qui contient déjà des données.
            ba = ba.toHex(); 
            ...
    pour récupérer d'une BD:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    QByteArray dt=query.value(query.record().indexOf("webcam")).toByteArray();
    dt=QByteArray::fromHex(dt);
    QImage img=QImage::fromData(dt);
    QPixmap m_pixmap = QPixmap::fromImage(img);
    ...
    merci.

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

Discussions similaires

  1. [FPDF] problème avec les images dans un tableau dynamique
    Par GADSN dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 08/04/2009, 11h11
  2. problème avec les images .eps
    Par twix24 dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 23/12/2007, 21h05
  3. problème avec les images
    Par wind_vinch dans le forum VB.NET
    Réponses: 9
    Dernier message: 28/03/2007, 22h23
  4. TreeView - Problème avec les images
    Par LoicH dans le forum C++Builder
    Réponses: 4
    Dernier message: 21/06/2005, 18h50

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