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

C++Builder Discussion :

ouvrir une image jpeg


Sujet :

C++Builder

  1. #1
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 36
    Par défaut ouvrir une image jpeg
    slt je voudrais lire une image jpeg ,pour une image bmp j'ai fait comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (OpenPictureDialog1->Execute())
      {
     
        Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
        Edit4->Text=IntToStr(Image1->Height);
        Edit5->Text=IntToStr(Image1->Width);
      }
    mais pour une image jpeg je ne sais pas comment la lire et avoir sa matrice

  2. #2
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Salut regarde du côté du composant TJPEG.

  3. #3
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    J'ai touver une info pertinente pour toi:
    http://www.developpez.net/forums/showthread.php?t=11241

  4. #4
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Salut,
    Voilà un exemple qui te permettra d'ouvrir les formats d'images les plus utilisés (BMP,ICO,JPEG) en dynamique.
    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
     
        if(OpenPictureDialog1->Execute())
        {
            if(ExtractFileExt(OpenPictureDialog1->FileName).LowerCase() == ".bmp")
            {//bitmap
                Image1->Picture->Bitmap->LoadFromFile(OpenPictureDialog1->FileName);
            }
            else if(ExtractFileExt(OpenPictureDialog1->FileName).LowerCase() == ".ico")
            {//bitmap
                Image1->Picture->Icon->LoadFromFile(OpenPictureDialog1->FileName);
            }
            else if(ExtractFileExt(OpenPictureDialog1->FileName).LowerCase() == ".jpg" || ExtractFileExt(OpenPictureDialog1->FileName).LowerCase() == ".jpeg")
            {
                TJPEGImage *jpeg = new TJPEGImage();
                jpeg->LoadFromFile(OpenPictureDialog1->FileName);
                Image1->Picture->Assign(jpeg);
                delete jpeg;
            }
        }

  5. #5
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Tu ne devrais pas faire un ExtractFileExt & un LowerCase à chaque fois dans ton if. Tu dois le faire une fois et mettre le résultats dans une variable locale.
    Imagine que ton image est un fichier .jpeg, alors il aura fait 4 fois les opérations ExtractFileExt & LowerCase. Pauvre petit CPU, il exécute des comandes inutilement C'est certain que de nos jours avec les processeurs ultra rapide dans nos machines, qu'il n'y a pas de différences notoires.

    C'est une recommandation de Société Protectrice des Processeurs.

    Pensons au réchauffement de la planète, optimisons notre code

  6. #6
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 36
    Par défaut
    merçi pour votre aide ,je vais esseyer vos propositions.

  7. #7
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Citation Envoyé par Crayon
    Tu ne devrais pas faire un ExtractFileExt & un LowerCase à chaque fois dans ton if. Tu dois le faire une fois et mettre le résultats dans une variable locale.
    Imagine que ton image est un fichier .jpeg, alors il aura fait 4 fois les opérations ExtractFileExt & LowerCase. Pauvre petit CPU, il exécute des comandes inutilement C'est certain que de nos jours avec les processeurs ultra rapide dans nos machines, qu'il n'y a pas de différences notoires.

    C'est une recommandation de Société Protectrice des Processeurs.

    Pensons au réchauffement de la planète, optimisons notre code
    Ne t'inquiètes pas pour le processeurs, ce code est compilé et le code compilé est souvent différent du code saisie. Les options de compilations prennent en compte ces optimisations (temps, taille ...).
    En résumé dans ce code le résultat de l'opération ExtractFileExt & LowerCase est mis dans une variable temporaire et le test est fait par rapport à cette variable. Exactement comme ce que tu fais, le compilateur recherche même les mêmes conditions dans des fonctions différentes pour optimiser aux maximum la taille du fichier (et ainsi pointer sur 1 condition).

    Si tu fais un test pour voir le temps d'exécution entre ta fonction et la mienne, il ne doit pas y avoir de différence.

    Sinon, le problème est-il résolu?

  8. #8
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 36
    Par défaut
    slt, j'ai esseyer ta solution et elle marche trés bien ,pour l'affichage de la matrice, j'ai utilisé un "Memo" mais la matrice nété pas bien affiché ,c.à.d que les chiffres étaient collé les uns aux autres, si vous avez une autre proposition pour l'affichage de la matrice , je serai ravi de votre proposition. merçi....

  9. #9
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut
    J'ai déja rencontré le même prob que le tien amintek.
    Je vais partager mes solutions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include<jpeg.hpp>
     
    TJpegImage * saryjpeg;
    ..........
    saryjpeg = TJpegImage->Create();
    saryjpeg.LoadFromFile(OpenDialog1->FileName);
    Timage photo;
    photo.Picture.Bitmap.Assign(saryjpeg.bitmap);
    ...........
    Préviens moi s'il y a des erreurs de syntaxe car je suis dans un cyber là, pas de docs.
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  10. #10
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 36
    Par défaut
    merçi à vous tous pour cette aide g pu lire l'image, et encore merçi

  11. #11
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 52
    Par défaut
    salut amintek;

    SVP comment avez vous arrivé à afficher les valeurs de pixels de l'image; j'ai essayer avec un string grid mais le compilateur m'a afficher l'erreur suivante" l'image ne peut etre modifiée que si elle contient un bitmap".

    veuillez m'aidez SVP.

    merci à vous

  12. #12
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 131
    Par défaut
    voici un code pour un peu t'aider.dans mon code j'extrait l'extension de l'image e ensuite je fait le traitement dont je veut
    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
    TJPEGImage*image =new TJPEGImage();
     
     
     
       if(OpenPictureDialog1->Execute())
     {  ext=ExtractFileExt(OpenPictureDialog1->FileName);
    if(ext==".bmp")
    {
    Image2->Picture->LoadFromFile(OpenPictureDialog1->FileName);
     
     
     }
    else
    {
    if(ext==".jpg")
    { 
    image->LoadFromFile(OpenPictureDialog1->FileName);
    Image2->Picture->Bitmap->Assign(image);
     delete image;
    }}
    alors ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image2->Picture->Bitmap->Assign(image);
    cotient le bitmap de l'image jpeg et on travaille avc ce bitmap pr faire la lecture de pixels ou autre chose.

  13. #13
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 52
    Par défaut
    Citation Envoyé par l_seringa Voir le message
    voici un code pour un peu t'aider.dans mon code j'extrait l'extension de l'image e ensuite je fait le traitement dont je veut
    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
    TJPEGImage*image =new TJPEGImage();
     
     
     
       if(OpenPictureDialog1->Execute())
     {  ext=ExtractFileExt(OpenPictureDialog1->FileName);
    if(ext==".bmp")
    {
    Image2->Picture->LoadFromFile(OpenPictureDialog1->FileName);
     
     
     }
    else
    {
    if(ext==".jpg")
    { 
    image->LoadFromFile(OpenPictureDialog1->FileName);
    Image2->Picture->Bitmap->Assign(image);
     delete image;
    }}
    alors ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image2->Picture->Bitmap->Assign(image);
    cotient le bitmap de l'image jpeg et on travaille avc ce bitmap pr faire la lecture de pixels ou autre chose.
    merci à vous je vais essayer ce que vous m'avez donner.
    A+

  14. #14
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 52
    Par défaut
    salut l_seringa ;

    merci bcp pour votre aide, je manipule bien les images Jpeg maintenant, le seul problème est que lorsque j'enregistre mon image Jpeg je peux pas la réouvrir, ça me fais une erreur d'exécution,qu'est ce que je dois faire si vous avez une idée .
    voici mon code pour l'enregistrement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(SavePictureDialog1->Execute())
    Form2->Image2->Picture->SaveToFile(SavePictureDialog1->FileName);
    avec defaultext=BMP ,et quand je veux enregistrer un Jpeg je le met à JPEG, mais toujours le meme problème.

    merci pour votre aide

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

Discussions similaires

  1. Récupérer une image JPEG à partir d'une vidéo
    Par kurul1 dans le forum C++Builder
    Réponses: 8
    Dernier message: 09/08/2006, 10h51
  2. Rogner une image jpeg ou bmp
    Par Valeyre dans le forum Langage
    Réponses: 10
    Dernier message: 18/10/2005, 11h01
  3. [32 bits] Redimensionner une image JPEG/GIF/PNG...
    Par CR_Gio dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 04/10/2005, 00h57
  4. Copier une image (jpeg) dans le presse papier
    Par benj63 dans le forum C++Builder
    Réponses: 2
    Dernier message: 29/07/2002, 14h51
  5. comment réduire une image jpeg (taille x*y)
    Par don-diego dans le forum C
    Réponses: 4
    Dernier message: 14/07/2002, 20h06

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