Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1045 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  importer une image JPG dans Qt

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

importer une image JPG dans Qt

n°1799132
yezurof
Posté le 13-10-2008 à 10:10:07  profilanswer
 

Voila, j'ai un petit soucis dans une application que j'essaye de faire.
Je voudrais faire un programme qui prend une premiere image, calcul sa moyenne de rouge, vert, bleu,
puis ensuite parcourt un certain nombre d'autres images, et les modifie pour mettre les meme moyenne (le but étant d'uniformiser la luminosité de quelques centaines d'images d'un court metrage en stop motion)
 
Lorsque je teste mon embryon d'application sur des images en BMP, ca marche niquel...
Mais il ne veut pas prendre d'image JPG en entrée, alors que Qt est sensé supporter ce format sans problème... J'ai d'ailleur dans le dossier plugins du Qt les fichier permettant normalement de gerer le JPG.
 
Bon, voila le code, puis si quelqun pouvait m'aider, ca serait gentil ^^
 
 
 

Code :
  1. #include <iostream>
  2. #include <QString>
  3. #include <QImage>
  4. #include <QColor>
  5. #include <QMessageBox>
  6. #include <QApplication>
  7. int main(int argc, char* argv[])
  8. {
  9.     int r, g, b; //couleur de reference
  10.     int rn, gn, bn; //couleur de notre image en cour
  11.     int rdif, gdif, bdif; //différence entre nos couleur de départ et les nouvelle
  12.     int i, j, k, x; //i et j et k servent au boucle, x compte le nombre de passage dans la boucle
  13.     int v; //une valeure tampon pour mes changements de photo
  14.     int longueur, largeur; //taille de notre image
  15.     QImage* image; //notre image
  16.     QString nom, tampon; //variable servant a loader les images
  17.     QRgb color; //sert a recuperer la couleure d'un pixel
  18. QApplication app(argc, argv);
  19.     /*on recupere le nom de fichier passé en argument
  20.     puis on construit notre premiere image  a partir de ce nom*/
  21.     //nom = new QString(argv[1]);
  22.     nom = "bouh.jpg";
  23.     image = new QImage(nom);
  24.     /************************************
  25.     taille d'images fixées en dur. A automatiser
  26.     ************************************/
  27.     largeur = 3072;
  28.     longueur = 2304;
  29.     /*on calcul nos moyenne de r,g,b*/
  30.     r = 0;
  31.     g = 0;
  32.     b = 0;
  33.     x=0;
  34.     for(i=0;i<largeur/2; i=i+50)
  35.     {
  36.         color = image->pixel(i,i);
  37.         r = r + qRed(color);
  38.         g = g + qGreen(color);
  39.         b = b + qBlue(color);
  40.         x++;
  41.     }
  42.     r = r/x;
  43.     g = g/x;
  44.     b = b/x;
  45.     /**************************
  46.     on load notre deuxieme image...
  47.     pour plus tard: demander a l'utilisateur le nombre d'image
  48.     *****************************/
  49.     nom="DSCF2429.jpg";
  50.     for(k=0;k<2;k++)
  51.     {
  52.         image->load(nom);
  53.         //on calcul la moyenne de la deuxieme image
  54.         rn = 0;
  55.         gn = 0;
  56.         bn = 0;
  57.         x=0;
  58.         for(i=0;i<largeur/2; i=i+50)
  59.         {
  60.             color = image->pixel(i,i);
  61.             rn = rn + qRed(color);
  62.             gn = gn + qGreen(color);
  63.             bn = bn + qBlue(color);
  64.             x++;
  65.         }
  66.         rn = rn/x;
  67.         gn = gn/x;
  68.         bn = bn/x;
  69.         /***********************************
  70.         on calcul les différences
  71.         ***********************************/
  72.         rdif = r - rn;
  73.         gdif = g - gn;
  74.         bdif = b - bn;
  75.         //QMessageBox::information(NULL,"deplacement", QString::number(rdif));
  76.         //on modifie la deuxieme image en fonction de nos variables dif
  77.         for(i=0;i<largeur;i++)
  78.         {
  79.             for(j=0;j<longueur;j++)
  80.             {
  81.                 color = image->pixel(i,j); //on recupere la couleur du pixel a mosifier
  82.                 //on vérifie qu'on ne passe pas en couleure négative
  83.                 if((qRed(color)+rdif)<255)
  84.                 {   rn = qRed(color)+rdif; }
  85.                 else
  86.                 {   rn = 255; }
  87.                 if((qGreen(color)+gdif)<255)
  88.                 {   gn = qGreen(color)+gdif; }
  89.                 else
  90.                 {   gn = 255; }
  91.                 if((qBlue(color)+bdif)<255)
  92.                 {   bn = qBlue(color)+bdif; }
  93.                 else
  94.                 {   bn = 255; }
  95.                 //on modifie le pixel
  96.                 color = qRgb(rn, gn, bn);
  97.                 image->setPixel(i,j,color);
  98.             }
  99.         }
  100.         QMessageBox::information(NULL,"deplacement", "on va sauvegarder" );
  101.         //on sauvegarde l'image
  102.         image->save(nom);
  103.         QMessageBox::information(NULL,"deplacement", "j'ai fini" );
  104.         //on passe a l'image sivante en incrémentant les numero de 1
  105.         tampon = nom.left(8);
  106.         tampon = tampon.right(4);
  107.         v = tampon.toUInt();
  108.         v++;
  109.         tampon = QString::number(v); //contien les 4 chiffre
  110.         tampon += nom.right(4);  //contien les 4 chiffre + le .bmp
  111.         nom = nom.left(4); //contient les 4 lettre de gauches
  112.         nom += tampon; //contient le nouveau nom de fichier
  113.     }
  114. return app.exec();
  115. }


 
 

mood
Publicité
Posté le 13-10-2008 à 10:10:07  profilanswer
 

n°1799153
Amonchakai
Posté le 13-10-2008 à 10:42:26  profilanswer
 

Hello,
 
    Dans QT, la gestions des formats giff, jpeg, tiff, ... se fait grâce a des dll. Et ces dll doivent se trouver dans un répertoires nommé "imageformats" dans le répertoire où se trouve ton application. (Les dll se trouvant dans le répertoire plugin de QT). Essaye déjà en rajoutant ce répertoire & dll.  
 
   Bon ça biensur si tu est sous windows...  
 
   Sous Linux, j'ai pas eu de pb...


Message édité par Amonchakai le 13-10-2008 à 10:43:06
n°1799175
yezurof
Posté le 13-10-2008 à 11:00:30  profilanswer
 

Merci beaucoup, ca marche impec!
Ils pourraient le mettre dans la doc quand meme les petits salopio (maintenant, si ca y est, je vais passer pour un con ^^)

n°1799236
Amonchakai
Posté le 13-10-2008 à 11:21:14  profilanswer
 

oui, regarde la doc ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  importer une image JPG dans Qt

 

Sujets relatifs
Affichage d'image et protection hotlinkImage sur une autre
Afficher une image random tirée du webAfficher une image aléatoirement
[Java] prob hcemin relatif ImageOpen XML API : insérer une image dans Word
Insertion d'image : quels sont les attributs recommandés ?Problème d'ordre de superposition une image affichée avec onmouseover
Adaptation page site composé d'image avec du texte à écran hte résol.image aléatoire dans background css
Plus de sujets relatifs à : importer une image JPG dans Qt


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR