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

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Points : 131
    Points
    131
    Par défaut Lire et affciher une image en Qt
    Voila ce que j'ai mis mais ça marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QDataStream::SetByteOrder(QDataStream::LittleEndian) ;
                QDataStream in (&file);//Lecture des données contenues dans le fichier.

  2. #22
    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 lisco Voir le message
    Voila ce que j'ai mis mais ça marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QDataStream::SetByteOrder(QDataStream::LittleEndian) ;
                QDataStream in (&file);//Lecture des données contenues dans le fichier.
    Mets ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QDataStream in (&file);
    in.SetByteOrder(QDataStream::LittleEndian);
    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. #23
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Points : 131
    Points
    131
    Par défaut Lire et afficher une image en Qt
    Impeccable et merci les guars j'ai les bonnes valeurs, il me reste encore un long chemin à faire car je dois afficher mon image dans un QLabel.Vu que là que connais le nombre de lignes et de colonnes de mon image ainsi que la taille des commentaires inclus dans le fichier image, je peux créer un buffer en calculant la taille de l'image = NbLignes * NbColonnes et ensuite je stocke tous mes pixels en commençant à lire mon fichier à partir de l'adresse qui vient juste aprés les commentaires. Ma question pour commencer est que j'ai trouvé la taille du commentaire 309 j'espere que c'est en Octet??Si oui est ce que je peux me placer à l'dresse qui suit pour lire mes pixels de l'image en faisant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    file.seek(309) ;
    QDataStream in (&file) ;
     
    QImage image ;
    in >> image ;
    label->setPixmap(QPixmap::fromImage(image)) ;
    Merci d'avance de votre participation

  4. #24
    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 lisco Voir le message
    Ma question pour commencer est que j'ai trouvé la taille du commentaire 309 j'espere que c'est en Octet??
    y as de forte chance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QImage image ;
    in >> image ;
    Comment Qt pourrai connaitre la taille la façon de lire ton image??
    il faut que tu fasse cela en deux étape :
    1- tu créé une QImage à une taille donné
    2- tu li tes pixels et les copie dans la QImage. Pour commencer utilise la fonction setPixel http://qt.developpez.com/doc/4.5/qimage/#setpixel-2.

    Une fois que tu aura réussi tu pourra faire des optimisations (setPixel est lent). Mais chaque chose en son temps


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    label->setPixmap(QPixmap::fromImage(image)) ;
    Ca c'est bon

  5. #25
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Août 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 41
    Points : 47
    Points
    47
    Par défaut
    Salut,

    Citation Envoyé par yan Voir le message

    Comment Qt pourrai connaitre la taille la façon de lire ton image??
    il faut que tu fasse cela en deux étape :
    1- tu créé une QImage à une taille donné
    2- tu li tes pixels et les copie dans la QImage. Pour commencer utilise la fonction setPixel http://qt.developpez.com/doc/4.5/qimage/#setpixel-2.
    Je ne sais pas si ca vaut le coup ou pas en terme de rapidité, mais peut etre que recreer un bmp a partir de ton fxd serait utile.

    Citation Envoyé par lisco Voir le message
    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.
    Quand tu dis "les valeurs des pixels", si c'est en rgb, tu as juste a reorganiser les données pour transformer ton fxd en bmp, et ensuite tu pourrais afficher le bmp dans ton label.
    Je ne suis pas sur que ce soit plus rapide vu qu'il faille recréer un fichier (temps d'ecriture sur le disque dur), a moins que ce soit possible de créer un fichier "virtuel" (qui reste en ram sans etre ecrit sur le disque dur) mais la je ne sais pas...

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Points : 131
    Points
    131
    Par défaut Lire et Afficher une image en Qt
    Bonjour, j'ai un probléme pour afficher mon image dans le QLabel.Apres une lecture de mon fichier, je connais par où je dois commencer à lire mes pixels mais j'ai du mal à créer un buffer et a y stocker les pixels et ensuite afficher mon 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
    28
    void Maclass::ReadImage()
    {
     
       QFile file ;
     
      // QImage image ;
       QByteArray byteArray ;
       //(nom = (type*) calloc (nombre, sizeof(type) ) ) == NULL )
       isize = 1500 * 1800 * 4 ; //Taille de l'image en Octet.4 étant la taille d'un Octet car l'image est codé sur 4 Octet.
     
       char* image = (char*) malloc(isize) ; //Allocation dynamique ou Buffer pour stocker les données qui seront lues.
       if((image) == 0)   //Tester pour verifier que l'espace memoire est bien reserve.
       {
           QMessageBox::information(this, tr("Image Viewer"),tr("").append("Impossible de reserver la memoire")) ;
       }
     
     
       QMessageBox::information(this, tr("Image Viewer"),tr("la taille de l'iamge est %1").arg(sizeof(image))) ;
     
       file.seek(128 + CommentLength) ;     //Je me positionne à la fin des commentaires et au début des pixels de l'image pour faire la lecture.
       file.read(image, isize) ;           //Je lis les données du fichier et je les stocke dans image en précisant la taille de image.
     
       //Comment afficher les pixels en image dans un QLabel ??
     
     
     
    ui->ZoneImage->setPixmap(QPixmap::loadFromData(image,QImage::Format_ARGB32,Qt::gray)) ;
    }


    J'ai pensé aussi à faire ceci mais rien ne marche, aidez moi svp c'est ça fait 2 jours que je galére je pense que ya quelque chose qui m'échappe:


    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
    QFile file ;
    file.seek(128 + CommentLength) ;//Adresse de début de lecture des pixels.
     
     
    int sizeImage = 1500 * 1800 * 4 ;//Calcul de la taille de l'image:rows * columns * PixelType
    QByteArray byteArray ; //Declare un tableau pour y stocker les données de l'image.
    byteArray.resize(sizeImage) ;//redimensionne le tableau à la meme taille que l'image.
    QDataStream in (&file) ;
    in >> byteArray ;//On met les données dans le tableau.
    QBuffer buffer(&byteArray) ;//On met le tableau dans un buffer.
     
    //Maintenant il faut lire le buffer pour écrire l'image dans un QLabel.
     
    //ui->ZoneImage->setPixmap(byteArray,QImage::Format_ARGB32) ;
    }
    merci d'avance

  7. #27
    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 crées une QImage a l'aide de ce constructeur QImage::QImage ( uchar * data, int width, int height, Format format ). C'est de lien qu'a donné yan dans un poste en page 1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QImage uneImage(image , 1800, 1500, QImage::Format_ARGB32) ;
    ui->ZoneImage->setPixmap(QPixmap::fromImage(uneImage));
    Si je ne me trompe pas cela devrait marché a peut pres comme ça.
    Verifie que je n'ai pas entervertie la largeur et la longeur et ausi la format de l'image si c'est le bon.
    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.

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Points : 131
    Points
    131
    Par défaut
    Bonjour, j'ai essayé avec le constructeur QImage::QImage ( uchar * data, int width, int height, Format format )
    Mais j'ai cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error: call of overloaded `QImage(char*&, int, int, QImage::Format)' is ambiguous
    Bizarre car mon image est bien un char, est ce je dois faire un cast de char à uchar??

    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
    typedef char* uchar ;
    isize = 1500 * 1800 * 4 ; //Taille de l'image en Octet.4 étant la taille d'un Octet car l'image est codé sur 4 Octet.
     
       uchar image = (char*) malloc(isize) ; //Allocation dynamique ou Buffer pour stocker les données qui seront lues.
       if((image) == 0)   //Tester pour verifier que l'espace memoire est bien reserve.
       {
           QMessageBox::information(this, tr("Image Viewer"),tr("").append("Impossible de reserver la memoire")) ;
       }
     
     
       QMessageBox::information(this, tr("Image Viewer"),tr("la taille de l'iamge est %1").arg(sizeof(image))) ;
     
       file.seek(128 + CommentLength) ;     //Je me positionne à la fin des commentaires et au début des pixels de l'image pour faire la lecture.
       file.read(image, isize) ;           //Je lis les données du fichier et je les stocke dans image en précisant la taille de image.
     
       //Comment afficher les pixels en image dans un QLabel
     
     
       QImage uneImage(image , 1800, 1500, QImage::Format_ARGB32) ;
       ui->ZoneImage->setPixmap(QPixmap::fromImage(uneImage));
     
     
          }
     }
    Je voudrais savoir aussi si ma fonction file.read(image, isize) fait bien ce que je pense car je suis pas sur et aussi si c'est possible que image soit un char?

  9. #29
    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
    uchar est un type Qt. et c'est plutot un typedef unsigned char qu'un typedef char*.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     char* image = (char*) malloc(isize);
     
    QImage uneImage((uchar*)image , 1800, 1500, QImage::Format_ARGB32) ;
    ui->ZoneImage->setPixmap(QPixmap::fromImage(uneImage));
    En esperant cette fois que cela marche.
    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.

  10. #30
    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
    je te le reconseil, utilise dans un premier temps setPixel.
    Tu auras bien moins de problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    QImage uneImage(w, h, QImage::Format_ARGB32) 
    for(int y = 0 ;y < h ; ++y)
       for(int x = 0 ; x < w;++w)
       {
          uneImage.setPixel(x,y,...);
       }
    ui->ZoneImage->setPixmap(QPixmap::fromImage(uneImage));
    /!\ si tu donne un buffer à QImage, il s'en servira mais ne s'occupera pas de sa destruction. Dans vos code, y as fuite mémoire

  11. #31
    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 yan Voir le message
    /!\ si tu donne un buffer à QImage, il s'en servira mais ne s'occupera pas de sa destruction. Dans vos code, y as fuite mémoire
    Je comprends pas trop elle est ou la fuite memoire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ui->ZoneImage->setPixmap(QPixmap::fromImage(uneImage));
    free(image);
    Si tu fais ça il y a encore une fuite memoire pour toi ?
    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.

  12. #32
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     char* image = (char*) malloc(isize);
    tu ne fait pas de destruction de image. Lorsque tu donne ce pointeur à QImage, il va juste l'utiliser. PMais ne va pas le détruire.

    En plus le buffer doit avoir la taille de ses ligne aligné sur 32. Il faut donc parfois allouer de la mémoire inutile en plus.

  13. #33
    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 yan Voir le message
    En plus le buffer doit avoir la taille de ses ligne aligné sur 32.
    Peux tu expliquer j'ai pas bien compris ?

    Sinon si on fait un free() il n'y a plus de fuite memoire ? Ce que tu veux dire c'est qu'il utilise un malloc() sans faire de free apres avoir donné ce buffer pour la création de d'une QImage ?
    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. #34
    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 superjaja Voir le message
    Peux tu expliquer j'ai pas bien compris ?
    tout est dans la doc
    http://qt.developpez.com/doc/4.5/qimage/#qimage-4
    Constructs an image with the given width, height and format, that uses an existing read-only memory buffer, data. The width and height must be specified in pixels, data must be 32-bit aligned, and each scanline of data in the image must also be 32-bit aligned.
    la taille mémoire d'une ligne doit être un multiple de 32bits (ou 4 octet). Je ne connait pas trop les raison mais c'est lié au structure d'affichage des os.
    par exemple, une image de 33*33:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //taille en octet d'une ligne
    int taille_ligne : 33*sizeof(pixel);
    //si cette taille n'est pas un multiple de 4 octet
    //on prend le multiplie supérieur
    if((taille_ligne % 4)!=0)
        taille_ligne  = (33/4+1)*4;
    si ta taille en octet d'une ligne n'est pas multiple de 4, tu augmente cette taille. Tu as donc pour chaque ligne de la mémoire inutilisé.



    Citation Envoyé par superjaja Voir le message
    Sinon si on fait un free() il n'y a plus de fuite memoire ? Ce que tu veux dire c'est qu'il utilise un malloc() sans faire de free apres avoir donné ce buffer pour la création de d'une QImage ?
    Quand tu donne donne un buffer à QImage, c'est à toi de gérer sa vie et non au QImage. Si tu détruit ce buffer mais que tu utilise encore la QImage t'auras aussi un problème
    The buffer must remain valid throughout the life of the QImage. The image does not delete the buffer at destruction.

  15. #35
    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
    Merci yan de ces précisions. J'avais pas vu en fait qu'il fallait gerer la vie du buffer soi meme et qu'il etait dependant de la QImage.
    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.

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Points : 131
    Points
    131
    Par défaut
    Bonjour, aprés une journée de travailler je me retrouve toujours avec le meme probléme car j'arrive toujours pas à afficher l'image mais j'ai pas mal progressé en tant que debutant donc je vous remercie de votre aideet de vos conseils, voici où j'en suis:

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    QFile file("C:/Documents and Settings/Image.fxd") ;
     
          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));
     
               file.seek(0) ;
     
                QDataStream in(&file);//Lecture des donnees contenues dans le fichier.
                in.setByteOrder(QDataStream::LittleEndian) ;//Pour lire dans le bon ordre et avec le bon format des donnees.
     
     
     
                in >> FileMagic >> rows >> columns >> CommentLength;
     
     
              QMessageBox::information(this, tr("Image Viewer"),
            tr("the number of the File Magic is%1.").arg(FileMagic),tr("the number of the rows is%1.").arg(rows),tr("the number of the columns is%1.").arg(columns) );
     
     
     
     
     
             QMessageBox::information(this, tr("Image Viewer"),
              ,  tr("the length of the comment is%1.").arg(CommentLength) ) ;
     
             int Lengthdata = rows * columns ;//taille de .
     
             QMessageBox::information(this, tr("Image Viewer"),tr("the length of the data is%1.").arg(Lengthdata));
     
     
     
       file.seek(128 + CommentLength) ;     //Je me positionne a  la fin des commentaires et au debut des pixels de l'image pour faire la lecture.
     
     
     
     
    //Premierement je crée une QImage à la taille de mon image.
     
    QImage uneImage(rows, columns, QImage::Format_ARGB32) ;
    for(int y = 0 ;y < rows ; ++y )
    {
       for(int x = 0 ; x < columns; ++x )
       {
          uneImage.setPixel(x,y,QImage::Format_ARGB32);
       }
    }
     
    //Deuxiément je lis les pixels et je les mets dans le QImage crée.
     
    in >> uneImage ;
     
    ui->ZoneImage->setPixmap(QPixmap::fromImage(uneImage));

    Et voici les erreurs que Qt m'affiche:


    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
    QImage::setPixel: coordinate (0,1500) out of range
    QImage::setPixel: coordinate (1,1500) out of range
    QImage::setPixel: coordinate (2,1500) out of range
    QImage::setPixel: coordinate (3,1500) out of range
    QImage::setPixel: coordinate (4,1500) out of range
    QImage::setPixel: coordinate (5,1500) out of range
    QImage::setPixel: coordinate (6,1500) out of range
    QImage::setPixel: coordinate (7,1500) out of range
    QImage::setPixel: coordinate (8,1500) out of range
    QImage::setPixel: coordinate (9,1500) out of range
    QImage::setPixel: coordinate (10,1500) out of range
    QImage::setPixel: coordinate (11,1500) out of range
    QImage::setPixel: coordinate (12,1500) out of range
    QImage::setPixel: coordinate (13,1500) out of range
    QImage::setPixel: coordinate (14,1500) out of range
    QImage::setPixel: coordinate (15,1500) out of range
    QImage::setPixel: coordinate (16,1500) out of range
    QImage::setPixel: coordinate (17,1500) out of range
    QImage::setPixel: coordinate (18,1500) out of range
    QImage::setPixel: coordinate (19,1500) out of range
    QImage::setPixel: coordinate (20,1500) out of range
    QImage::setPixel: coordinate (21,1500) out of range
    QImage::setPixel: coordinate (22,1500) out of range
    QImage::setPixel: coordinate (23,1500) out of range
    QImage::setPixel: coordinate (24,1500) out of range
    QImage::setPixel: coordinate (25,1500) out of range
    QImage::setPixel: coordinate (26,1500) out of range
    .........
    ainsi de suite pour toute la taille jusqu'à 1499 et 1799.
    Bizarre pour moi car je vois pas l'erreur,aider moi svp

  17. #37
    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 lisco Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uneImage.setPixel(x,y,QImage::Format_ARGB32);

    La fonction setPixel() comme son nom l'indique sert a donner une valeur a un pixel de l'image. Tu l'utilise mal il faut que tu donnes une valeur a ses pixel. Normalement sa correspond a ce que tu as trouvé dans ton fichier binaire. La valeur du pixel est un unint qui correspond directement a une valeur RGBA.

    Exemple pour un pixel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     QRgb value;
     value = qRgba(189, 149, 39,0);
    uneImage.setPixel(x,y,value);
    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.

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Points : 131
    Points
    131
    Par défaut
    C'est bizarre j'ai une image codé en float c'est à dire 32 bits par pixel et tu me dit que la valeur d'un pixel c'est un uint ??tu peux expliquer stp
    En plus comme je l'ai montré dans mon code je lis des valeurs dans un fichier et à partir d'une certaine position, donc c'est vraiment chaud je vois pas comment mettre chaque valeur dans un setpixel(int,int uint) à moins que je les stoque dans un tableau byteArray?est ce une possibilité??

    Merci d'avance

  19. #39
    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
    pourquoi faire??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QImage uneImage(rows, columns, QImage::Format_ARGB32) ;
    ce ne serai pas plutôt uneImage(columns, rows , QImage::Format_ARGB32) ;



    ???? comment veut tu que QT sache lire tes pixel à ta place????
    Le setpixel sert à donner tes pixel à l'image (voir réponse de superjaja)



    C'est bizarre j'ai une image codé en float
    c'est des float???????? il faut être précis.


    je vois pas comment mettre chaque valeur dans un setpixel(int,int uint)
    qu'es ce qui t'empêche de lire pixel à pixel et d'utiliser le setPixel pour le donner à ton image?

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Points : 131
    Points
    131
    Par défaut
    oui mais j'ai une image en niveau de gris c'est à dire sans couleur , est ce toujours possible avec setpixel?
    et est ce que je peux utiliser file.read(monfichier.seek(i)) pour lire les pixels de l'image dans le fichier en faisant une boucle

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