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 :

Lire et afficher une image en Qt


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 2
    Par défaut Lire et afficher une image en Qt
    Bonjour,
    j'ai une image dans un fichier particulier nommé .fxd
    je dois lire mon image, la stocker dans un buffer ensuite l'afficher dans un QLabel, faire des traitements et la sauvegarder par la suite.Mais j'ai un un probléme pour la lecture de l'image:voici mon bout de code:


    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
          QFile file(FileName);
          if(!file.open(QIODevice::ReadOnly))             //On ouvre le fichier en lecture seule
          {
              QMessageBox::information(this, tr("Image Viewer"),
                                          tr("Cannot Open %1.").arg(FileName));
          }
          else
          {
               QMessageBox::information(this, tr("Image Viewer"),
                                        tr("File succesfull Open %1.").arg(FileName));
     
                QDataStream in(&file);//Lu les données contenues dans le fichier.
     
                QByteArray byteArray;//Declaration d'un tableau.
                byteArray.resize(2700000) ;//On redimensionne le tableau à la taille de l'image.
     
                in >> byteArray ;
     
                QBuffer buffer(&byteArray);//On crée un buffer pour le tableau.
     
     
     
     
             QDataStream out(&buffer) ;//On ecrit les données dans le buffer.
     
              QPixmap *pixmap = new QPixmap(byteArray) ;
              ui->ZoneImage->setPixmap(*pixmap) ;

    et là j'ai un probléme , je me suis perdu dans mes idées et rien ne s'affiche dans le QLabel.

    Aider moi svp et merci d'avance.

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    c'est quoi le format fxd?
    Vue le code, si Qt ne gère pas cette extension, je ne voie pas comment il pourrait te l'afficher...
    Se sera à toi de faire la convetion

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Par défaut Lire et afficher une image en Qt
    Bonjour, bon je reformule ma question et je vous propose ma nouvelle demarche:
    En fait le format fxd est un format de fichier d'image structuré de la maniére suivante:le fichier est composé de 3partie:
    une premiere partie comportant les caracteristiques de l'image à savoir nombre de lignes, de colonnes, niveau de gris max et min ....
    une deuxieme partie comportant des commentaires et
    une troisieme partie representant l'image elle meme c'est a dire les valeurs des pixels.

    Vu que Qt ne gere pas ce format c'est bien ce que je pense;j'ai décidé de lire le fichier fxd pour pouvoir connaitre le nombre de lignes et de colonnes des pixels de l'image et ensuite je vais lire et stocker les pixels dans un buffer pour pouvoir faire appel à la classe QPixmap qui me permettra à partir du buffer d'afficher l'image dans un QLabel.

    Mon probléme est que je sais pas comment avec Qt lire dans un fichier image et affichier les valeurs lues c'es a dire nombre de lignes et de colonnes.Ceci me permettra d'enlever les 2 premieres parties du fichier qui ne font pas parti de l'image. et l'autre question est comment stocker les pixels lus dans un buffer ,en d'autre terme faire une allocation dynamique de mémoire.

    Voici mon bout de code:si quelqu'un peut contribuer à la solution svp car c'est tres urgent pour moi et merci d'avance


    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
    31
    32
    QFile file(FileName);
          if(!file.open(QIODevice::ReadOnly))             //On ouvre le fichier en lecture seule
          {
              QMessageBox::information(this, tr("Image Viewer"),
                                         tr("Cannot Open %1.").arg(FileName));
          }
         else
         {
     
             QMessageBox::information(this, tr("Image Viewer"),
                                        tr("File succesfull Open %1.").arg(FileName));
     
                QDataStream in(&file);//Lecture des données contenues dans le fichier.
     
                quint16 rows ;
                quint16 columns ;
     
                in >> rows >> columns ;
     
     
                QMessageBox::information(this, tr("Image Viewer"),
                                         tr("the number of the columns is%1.").arg(rows),tr("the number of the rows is%1.").arg(columns) );
     
     
                QBuffer buffer ;
     
                in >> buffer ;
     
                QIODevice::readLineData(FxdHeader,12);
     
     
                   ui->ZoneImage->setPixmap(QPixmap::fromImage(image));
    Mais là j'ai n'importe quoi comme valeur de rows et columns

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    tu as deux pseudo????

    Y as des truc que je ne comprend pas. on entête est binaire? texte?
    QDataStream sert à lire du binaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    QIODevice::readLineData(FxdHeader,12);
    ui->ZoneImage->setPixmap(QPixmap::fromImage(image));
    D'où vien FxdHeader? pourquoi QIODevice::readLineData ??
    D'où viens image????

  5. #5
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    Si j'ai bien compris avant de lire tes pixels tu dois lire le premier fichier qui te dit comment est structuré ton image. Une fois que tu as lu ce fichier tu connais le nombre de ligne et de colonne et j'imagine aussi que tu connais la profondeur de ton image. Donc a partir de là tu connais obligatoirement le nombre d'octet a lire dans le fichier qui contient les pixels.

    Comme proposer par yan un QDataStream pour lire du binaire me parrait tres bien.

    Apres une fois que tu as les pixels dans un buffer je ne sais pas trop comment crée une image a partir d'un buffer.
    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.

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    Citation Envoyé par superjaja Voir le message
    Apres une fois que tu as les pixels dans un buffer je ne sais pas trop comment crée une image a partir d'un buffer.
    Soit tu créé une QImage et tu modifie pixel à pixel,
    soit tu utilise http://qt.developpez.com/doc/4.4/qimage/#qimage-4
    Mais attention cette dernière utilise le buffer donné. C'est expliqué dans la doc

Discussions similaires

  1. Lire et afficher une image
    Par pretyy dans le forum Débuter
    Réponses: 6
    Dernier message: 01/02/2012, 12h22
  2. Lire et afficher une image au format pgm
    Par didi_di dans le forum C++
    Réponses: 4
    Dernier message: 17/12/2009, 15h19
  3. Lire et afficher une image 3D (RGB)
    Par 77Camille dans le forum MATLAB
    Réponses: 1
    Dernier message: 06/06/2007, 12h09
  4. Lire et afficher une image (format TIFF)
    Par nuans dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 30/04/2007, 15h33
  5. [Débutante]Lire et afficher une image IRM sous C++ builder
    Par larimoise dans le forum C++Builder
    Réponses: 13
    Dernier message: 04/12/2006, 08h21

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